Merged branch 'namespace-rename'
authorkaspers <kaspers@kaspers-think.humaninference.com>
Mon, 22 Jul 2013 08:09:18 +0000 (10:09 +0200)
committerkaspers <kaspers@kaspers-think.humaninference.com>
Mon, 22 Jul 2013 08:09:18 +0000 (10:09 +0200)
31 files changed:
1  2 
access/pom.xml
core/pom.xml
core/src/main/java/org/apache/metamodel/query/builder/JoinFromBuilder.java
core/src/main/java/org/apache/metamodel/query/builder/JoinFromBuilderImpl.java
core/src/main/java/org/apache/metamodel/query/builder/TableFromBuilder.java
core/src/main/java/org/apache/metamodel/query/builder/TableFromBuilderImpl.java
couchdb/pom.xml
csv/pom.xml
csv/src/test/resources/csv_inconsistent_columns.csv
csv/src/test/resources/csv_no_linebreak.csv
csv/src/test/resources/csv_only_number_one.csv
csv/src/test/resources/csv_people.csv
csv/src/test/resources/csv_semicolon_singlequote.csv
csv/src/test/resources/csv_various_types.csv
csv/src/test/resources/tickets.csv
excel/pom.xml
fixedwidth/pom.xml
full/pom.xml
full/src/test/resources/customers.csv
jdbc/pom.xml
mongodb/pom.xml
openoffice/pom.xml
pojo/pom.xml
pojo/src/test/java/org/apache/metamodel/pojo/Person.java
pojo/src/test/java/org/apache/metamodel/pojo/PojoDataContextTest.java
salesforce/pom.xml
sugarcrm/pom.xml
sugarcrm/src/wsdl/soap-encoding.xsd
sugarcrm/src/wsdl/soap-wsdl.xsd
xml/pom.xml
xml/src/test/resources/xml_input_parent_and_child_relationship.xml

diff --cc access/pom.xml
@@@ -1,42 -1,42 +1,42 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-access</artifactId>\r
--      <name>MetaModel module for MS Access database files</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>com.healthmarketscience.jackcess</groupId>\r
--                      <artifactId>jackcess</artifactId>\r
--                      <version>1.2.6</version>\r
--                      <exclusions>\r
--                              <exclusion>\r
--                                      <groupId>commons-logging</groupId>\r
--                                      <artifactId>commons-logging</artifactId>\r
--                              </exclusion>\r
--                      </exclusions>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>jcl-over-slf4j</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--            <groupId>org.slf4j</groupId>\r
--            <artifactId>slf4j-nop</artifactId>\r
--            <scope>test</scope>\r
--        </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-access</artifactId>
++      <name>MetaModel module for MS Access database files</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>com.healthmarketscience.jackcess</groupId>
++                      <artifactId>jackcess</artifactId>
++                      <version>1.2.6</version>
++                      <exclusions>
++                              <exclusion>
++                                      <groupId>commons-logging</groupId>
++                                      <artifactId>commons-logging</artifactId>
++                              </exclusion>
++                      </exclusions>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>jcl-over-slf4j</artifactId>
++              </dependency>
++              <dependency>
++            <groupId>org.slf4j</groupId>
++            <artifactId>slf4j-nop</artifactId>
++            <scope>test</scope>
++        </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
  </project>
diff --cc core/pom.xml
@@@ -1,31 -1,31 +1,31 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-core</artifactId>\r
--      <name>MetaModel core API</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-api</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.easymock</groupId>\r
--                      <artifactId>easymock</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-core</artifactId>
++      <name>MetaModel core API</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-api</artifactId>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.easymock</groupId>
++                      <artifactId>easymock</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
index 0000000,4410cc8..31d43ff
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,26 +1,29 @@@
 -      public SatisfiedFromBuilder on(Column left, Column right);
+ /**
+  * 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.
+  */
+ package org.apache.metamodel.query.builder;
+ import org.apache.metamodel.schema.Column;
+ public interface JoinFromBuilder extends SatisfiedFromBuilder {
++    public SatisfiedFromBuilder on(Column left, Column right) throws IllegalArgumentException;
++
++    public SatisfiedFromBuilder on(String left, String right) throws IllegalArgumentException;
++    
+ }
index 0000000,a3211b0..1db9f7d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,73 +1,87 @@@
 -final class JoinFromBuilderImpl extends SatisfiedFromBuilderCallback implements
 -              JoinFromBuilder {
+ /**
+  * 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.
+  */
+ package org.apache.metamodel.query.builder;
+ import java.util.List;
+ import org.apache.metamodel.DataContext;
+ import org.apache.metamodel.query.FromItem;
+ import org.apache.metamodel.query.JoinType;
+ import org.apache.metamodel.query.Query;
+ import org.apache.metamodel.query.SelectItem;
+ import org.apache.metamodel.schema.Column;
+ import org.apache.metamodel.schema.Table;
 -      private JoinType joinType;
 -      private FromItem leftItem;
 -      private FromItem rightItem;
++final class JoinFromBuilderImpl extends SatisfiedFromBuilderCallback implements JoinFromBuilder {
 -      public JoinFromBuilderImpl(Query query, FromItem leftItem,
 -                      Table rightTable, JoinType joinType, DataContext dataContext) {
 -              super(query, dataContext);
 -              this.joinType = joinType;
 -              this.leftItem = leftItem;
 -              this.rightItem = new FromItem(rightTable);
 -      }
++    private JoinType joinType;
++    private FromItem leftItem;
++    private FromItem rightItem;
 -      @Override
 -      public SatisfiedFromBuilder on(Column left, Column right) {
 -              if (left == null) {
 -                      throw new IllegalArgumentException("left cannot be null");
 -              }
 -              if (right == null) {
 -                      throw new IllegalArgumentException("right cannot be null");
 -              }
 -              getQuery().getFromClause().removeItem(leftItem);
++    public JoinFromBuilderImpl(Query query, FromItem leftItem, Table rightTable, JoinType joinType,
++            DataContext dataContext) {
++        super(query, dataContext);
++        this.joinType = joinType;
++        this.leftItem = leftItem;
++        this.rightItem = new FromItem(rightTable);
++    }
 -              SelectItem[] leftOn = new SelectItem[] { new SelectItem(left) };
 -              SelectItem[] rightOn = new SelectItem[] { new SelectItem(right) };
 -              FromItem fromItem = new FromItem(joinType, leftItem, rightItem, leftOn,
 -                              rightOn);
++    @Override
++    public SatisfiedFromBuilder on(String left, String right) throws IllegalArgumentException {
++        Table leftTable = leftItem.getTable();
++        if (leftTable == null) {
++            throw new IllegalArgumentException("Left side of join is not a Table, cannot resolve ON item: '" + left + "'.");
++        }
++        Table rightTable = rightItem.getTable();
++        if (rightTable == null) {
++            throw new IllegalArgumentException("Right side of join is not a Table, cannot resolve ON item: '" + right + "'.");
++        }
 -              getQuery().from(fromItem);
++        Column leftColumn = leftTable.getColumnByName(left);
++        Column rightColumn = rightTable.getColumnByName(right);
++        return on(leftColumn, rightColumn);
++    }
 -              return this;
 -      }
 -      
 -      @Override
 -      protected void decorateIdentity(List<Object> identifiers) {
 -              super.decorateIdentity(identifiers);
 -              identifiers.add(joinType);
 -              identifiers.add(leftItem);
 -              identifiers.add(rightItem);
 -      }
++    @Override
++    public SatisfiedFromBuilder on(Column left, Column right) throws IllegalArgumentException {
++        if (left == null) {
++            throw new IllegalArgumentException("left cannot be null");
++        }
++        if (right == null) {
++            throw new IllegalArgumentException("right cannot be null");
++        }
++        getQuery().getFromClause().removeItem(leftItem);
++        SelectItem[] leftOn = new SelectItem[] { new SelectItem(left) };
++        SelectItem[] rightOn = new SelectItem[] { new SelectItem(right) };
++        FromItem fromItem = new FromItem(joinType, leftItem, rightItem, leftOn, rightOn);
++
++        getQuery().from(fromItem);
++
++        return this;
++    }
++
++    @Override
++    protected void decorateIdentity(List<Object> identifiers) {
++        super.decorateIdentity(identifiers);
++        identifiers.add(joinType);
++        identifiers.add(leftItem);
++        identifiers.add(rightItem);
++    }
+ }
index 0000000,a200989..15fb80b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,33 +1,39 @@@
+ /**
+  * 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.
+  */
+ package org.apache.metamodel.query.builder;
+ import org.apache.metamodel.schema.Table;
+ public interface TableFromBuilder extends
+               SatisfiedFromBuilder {
+       public JoinFromBuilder innerJoin(Table table);
+       
++      public JoinFromBuilder innerJoin(String tableName);
++      
+       public JoinFromBuilder leftJoin(Table table);
+       
++      public JoinFromBuilder leftJoin(String tableName);
++      
+       public JoinFromBuilder rightJoin(Table table);
++      
++      public JoinFromBuilder rightJoin(String tableName);
+       public TableFromBuilder as(String alias);
+ }
index 0000000,399fe38..10c9b74
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,83 +1,104 @@@
 -final class TableFromBuilderImpl extends SatisfiedFromBuilderCallback implements
 -              TableFromBuilder {
+ /**
+  * 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.
+  */
+ package org.apache.metamodel.query.builder;
+ import java.util.List;
+ import org.apache.metamodel.DataContext;
+ import org.apache.metamodel.query.FromItem;
+ import org.apache.metamodel.query.JoinType;
+ import org.apache.metamodel.query.Query;
+ import org.apache.metamodel.schema.Table;
 -      private FromItem fromItem;
++final class TableFromBuilderImpl extends SatisfiedFromBuilderCallback implements TableFromBuilder {
 -      public TableFromBuilderImpl(Table table, Query query,
 -                      DataContext dataContext) {
 -              super(query, dataContext);
++    private FromItem fromItem;
 -              fromItem = new FromItem(table);
 -              query.from(fromItem);
 -      }
++    public TableFromBuilderImpl(Table table, Query query, DataContext dataContext) {
++        super(query, dataContext);
 -      @Override
 -      public JoinFromBuilder innerJoin(Table table) {
 -              if (table == null) {
 -                      throw new IllegalArgumentException("table cannot be null");
 -              }
 -              return new JoinFromBuilderImpl(getQuery(), fromItem, table,
 -                              JoinType.INNER, getDataContext());
 -      }
++        fromItem = new FromItem(table);
++        query.from(fromItem);
++    }
 -      @Override
 -      public JoinFromBuilder leftJoin(Table table) {
 -              if (table == null) {
 -                      throw new IllegalArgumentException("table cannot be null");
 -              }
 -              return new JoinFromBuilderImpl(getQuery(), fromItem, table,
 -                              JoinType.LEFT, getDataContext());
 -      }
++    @Override
++    public JoinFromBuilder innerJoin(String tableName) {
++        return innerJoin(findTable(tableName));
++    }
 -      @Override
 -      public JoinFromBuilder rightJoin(Table table) {
 -              if (table == null) {
 -                      throw new IllegalArgumentException("table cannot be null");
 -              }
 -              return new JoinFromBuilderImpl(getQuery(), fromItem, table,
 -                              JoinType.RIGHT, getDataContext());
 -      }
++    @Override
++    public JoinFromBuilder innerJoin(Table table) {
++        if (table == null) {
++            throw new IllegalArgumentException("table cannot be null");
++        }
++        return new JoinFromBuilderImpl(getQuery(), fromItem, table, JoinType.INNER, getDataContext());
++    }
 -      @Override
 -      public TableFromBuilder as(String alias) {
 -              if (alias == null) {
 -                      throw new IllegalArgumentException("alias cannot be null");
 -              }
 -              fromItem.setAlias(alias);
 -              return this;
 -      }
++    @Override
++    public JoinFromBuilder leftJoin(String tableName) {
++        return leftJoin(findTable(tableName));
++    }
 -      @Override
 -      protected void decorateIdentity(List<Object> identifiers) {
 -              super.decorateIdentity(identifiers);
 -              identifiers.add(fromItem);
 -      }
++    @Override
++    public JoinFromBuilder leftJoin(Table table) {
++        if (table == null) {
++            throw new IllegalArgumentException("table cannot be null");
++        }
++        return new JoinFromBuilderImpl(getQuery(), fromItem, table, JoinType.LEFT, getDataContext());
++    }
++    @Override
++    public JoinFromBuilder rightJoin(String tableName) {
++        return rightJoin(findTable(tableName));
++    }
++
++    @Override
++    public JoinFromBuilder rightJoin(Table table) {
++        if (table == null) {
++            throw new IllegalArgumentException("table cannot be null");
++        }
++        return new JoinFromBuilderImpl(getQuery(), fromItem, table, JoinType.RIGHT, getDataContext());
++    }
++
++    @Override
++    public TableFromBuilder as(String alias) {
++        if (alias == null) {
++            throw new IllegalArgumentException("alias cannot be null");
++        }
++        fromItem.setAlias(alias);
++        return this;
++    }
++
++    @Override
++    protected void decorateIdentity(List<Object> identifiers) {
++        super.decorateIdentity(identifiers);
++        identifiers.add(fromItem);
++    }
++
++    private Table findTable(String tableName) {
++        if (tableName == null) {
++            throw new IllegalArgumentException("tableName cannot be null");
++        }
++        Table table = getDataContext().getTableByQualifiedLabel(tableName);
++        if (table == null) {
++            throw new IllegalArgumentException("No such table: " + tableName);
++        }
++        return table;
++    }
+ }
diff --cc couchdb/pom.xml
@@@ -1,60 -1,60 +1,60 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-couchdb</artifactId>\r
--      <name>MetaModel module for CouchDB databases</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.ektorp</groupId>\r
--                      <artifactId>org.ektorp</artifactId>\r
--                      <version>1.3.0</version>\r
--                      <exclusions>\r
--                              <exclusion>\r
--                                      <groupId>commons-logging</groupId>\r
--                                      <artifactId>commons-logging</artifactId>\r
--                              </exclusion>\r
--                      </exclusions>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.codehaus.jackson</groupId>\r
--                      <artifactId>jackson-core-asl</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.codehaus.jackson</groupId>\r
--                      <artifactId>jackson-mapper-asl</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>jcl-over-slf4j</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>commons-io</groupId>\r
--                      <artifactId>commons-io</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>commons-pool</groupId>\r
--                      <artifactId>commons-pool</artifactId>\r
--              </dependency>\r
--\r
--              <!-- Test dependencies -->\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-couchdb</artifactId>
++      <name>MetaModel module for CouchDB databases</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.ektorp</groupId>
++                      <artifactId>org.ektorp</artifactId>
++                      <version>1.3.0</version>
++                      <exclusions>
++                              <exclusion>
++                                      <groupId>commons-logging</groupId>
++                                      <artifactId>commons-logging</artifactId>
++                              </exclusion>
++                      </exclusions>
++              </dependency>
++              <dependency>
++                      <groupId>org.codehaus.jackson</groupId>
++                      <artifactId>jackson-core-asl</artifactId>
++              </dependency>
++              <dependency>
++                      <groupId>org.codehaus.jackson</groupId>
++                      <artifactId>jackson-mapper-asl</artifactId>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>jcl-over-slf4j</artifactId>
++              </dependency>
++              <dependency>
++                      <groupId>commons-io</groupId>
++                      <artifactId>commons-io</artifactId>
++              </dependency>
++              <dependency>
++                      <groupId>commons-pool</groupId>
++                      <artifactId>commons-pool</artifactId>
++              </dependency>
++
++              <!-- Test dependencies -->
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
diff --cc csv/pom.xml
@@@ -1,32 -1,32 +1,32 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-csv</artifactId>\r
--      <name>MetaModel module for comma-separated value (CSV) files</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--        <dependency>\r
--            <groupId>org.slf4j</groupId>\r
--            <artifactId>slf4j-nop</artifactId>\r
--            <scope>test</scope>\r
--        </dependency>\r
--              <dependency>\r
--                      <groupId>net.sf.opencsv</groupId>\r
--                      <artifactId>opencsv</artifactId>\r
--                      <version>2.1</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-csv</artifactId>
++      <name>MetaModel module for comma-separated value (CSV) files</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++        <dependency>
++            <groupId>org.slf4j</groupId>
++            <artifactId>slf4j-nop</artifactId>
++            <scope>test</scope>
++        </dependency>
++              <dependency>
++                      <groupId>net.sf.opencsv</groupId>
++                      <artifactId>opencsv</artifactId>
++                      <version>2.1</version>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
@@@ -1,7 -1,7 +1,7 @@@
--hello,world\r
--1,2\r
--3,4\r
--5,6,7\r
--8,9\r
--10\r
++hello,world
++1,2
++3,4
++5,6,7
++8,9
++10
  11,12
@@@ -1,5 -1,5 +1,5 @@@
--number,text\r
--1,hello\r
--1,hi\r
--1,howdy\r
++number,text
++1,hello
++1,hi
++1,howdy
  1,yo
@@@ -1,10 -1,10 +1,10 @@@
--id,name,gender,age\r
--1,"mike",male,18\r
--2,"michael",male,19\r
--3,"peter",male,18\r
--4,"bob",male,17\r
--5,"barbara, barb",female,18\r
--6,"charlotte",female,18\r
--7,"hillary",female,20\r
--8,"vera",female,17\r
++id,name,gender,age
++1,"mike",male,18
++2,"michael",male,19
++3,"peter",male,18
++4,"bob",male,17
++5,"barbara, barb",female,18
++6,"charlotte",female,18
++7,"hillary",female,20
++8,"vera",female,17
  9,"carrie",female,17
@@@ -1,10 -1,10 +1,10 @@@
--id;name;gender;age\r
--1;'mike';male;18\r
--2;'michael';male;19\r
--3;'peter';male;18\r
--4;'bob';male;17\r
--5;'barbara; barb';female;18\r
--6;'charlotte';female;18\r
--7;'hillary';female;20\r
--8;'vera';female;17\r
++id;name;gender;age
++1;'mike';male;18
++2;'michael';male;19
++3;'peter';male;18
++4;'bob';male;17
++5;'barbara; barb';female;18
++6;'charlotte';female;18
++7;'hillary';female;20
++8;'vera';female;17
  9;'carrie';female;17
@@@ -1,4 -1,4 +1,4 @@@
--date,time,description,rating,holiday\r
++date,time,description,rating,holiday
  2008-11-04,12:00,election day,8.8,no
  2008-12-24,00:00,christmas day,9.0,true
  2007-12-31,23:59,new years eve,6.4
--__color__,__group__,ticket,summary,component,version,type,owner,status,created,_changetime,_description,_reporter\r
--2,DataCleaner 1.5 Release,232,Memory consumption is too extensive in Value Distribution and Time Analysis,DataCleaner-core,None,enhancement,,new,2008-10-01T10:55:19Z+0200,2008-10-21T20:29:55Z+0200,"We should have a look at the Value Distribution and Time Analysis profiles. They consume very large amounts of memory because they basicly save all values in maps for analysis.\r
--\r
--One way of improving this could be through caching. Another way could be through more appropriate (less verbose) storing of intermediate data (this looks obvious in Time Analysis profile). A third way could be by letting the profiles create queries themselves (related to metadata profiling, #222).",kasper\r
--3,DataCleaner 1.5 Release,145,Streamlined MacOS compability,DataCleaner-gui,None,enhancement,asbjorn,reopened,2008-06-03T09:59:58Z+0200,2008-10-06T22:20:43Z+0200,"This ticket regards making DataCleaner GUI act as a \"regular\" MacOS application, ie.:\r
--\r
-- * A fitting title (\"DataCleaner\") in the application (instead of \"dk.eobjects.datacleaner...\")\r
-- * An installable MacOS package.\r
--",asbjorn\r
--3,DataCleaner 1.5 Release,202,Pattern Finder improvements,DataCleaner-core,None,enhancement,darrenH,assigned,2008-08-19T04:27:12Z+0200,2008-09-16T09:21:56Z+0200,"__Pattern Finder suggestions__:\r
-- * have an option to ignore repeating spaces (so {{{\"aaa aaaaa\" and \"aaa         aaaaa\"}}} are counted as one pattern. \r
-- * have an option to ignore case, and a different option to preserve case.\r
-- * have an option to treat all 'special' characters as one pattern (so \"aaa*\", \"aaa/\", \"aaa\\" etc' are counted as one pattern, maybe denoted \"aaaS\").\r
-- * have an option to treat all groups of characters as a single sub-pattern.  The idea is to be able to distinguish easily between names (say) that have two words and names that have more.  This option should have a single pattern for \"Kasper Sorensen\" and \"George Bush\" (the pattern should ideally be \"An An\", denoting any numbers of alpha, space, any number of alpha).  But \"Gorge W Bush\" will have the pattern \"An A An\".\r
-- * it should be possible to combine the above options",BenBor\r
--3,DataCleaner 1.5 Release,217,Commandline execution of .dcv and .dcp files,DataCleaner-core,None,enhancement,,new,2008-09-04T08:46:56Z+0200,2008-10-19T23:36:38Z+0200,"We should make a command line version of DataCleaner which could take in a .dcp or .dcv file, execute it and save the results in a file or a database (#117). This should ideally be done in DataCleaner core as it would be straight forward to reuse it in DataCleaner-webmonitor in the future then.",kasper\r
--3,DataCleaner 1.5 Release,230,Add custom seperator to CSV file dialog box,DataCleaner-gui,None,enhancement,michaelwc,assigned,2008-09-25T15:18:17Z+0200,2008-10-15T00:38:41Z+0200,Add the ability to use custom seperators in data files.,michaelwc\r
--3,DataCleaner 1.5 Release,198,Do scroll bars work for a very large result screen?,DataCleaner-gui,None,investigation,None,new,2008-08-19T01:14:16Z+0200,2008-09-20T20:15:23Z+0200,"I have a large table with many columns and I perform analysis on all the columns at once.  I get a large result screen.  The bug: scroll bars stop working; the only thing that works is the mouse's scroll-down button.  The bottom scroll bar doesn't work either, so I can't actually see the results.",BenBor\r
--2,DataCleaner 1.6 Release,105,Identify duplicate records,DataCleaner-core,None,enhancement,,new,2008-03-24T12:19:28Z+0100,2008-10-22T16:23:54Z+0200,"A way of identifying duplicate records in a table. Be aware that duplicate tables often don't have the same key, but certain fields will be the same. So we will pick out columns to check for similarity and return what is \"potential duplicate records\", since this is an area where human eyes are necessary in the last end anyway.\r
--\r
--Whether this needs to be a validation rule or a profile I haven't thought through... What do you think?",kasper\r
--2,DataCleaner 1.6 Release,242,Sampling in data selection,DataCleaner-gui,None,enhancement,,new,2008-10-23T17:44:36Z+0200,2008-10-23T17:44:36Z+0200,Based on [/discussion/1/46 this discussion] we need an option to filter data selections in the profiler and validator. This will allow users to try out their profile configurations on a subset of the data they want to use.,kasper\r
--3,DataCleaner 1.6 Release,206,Export results,DataCleaner-core,None,enhancement,None,new,2008-08-19T04:35:22Z+0200,2008-09-16T09:25:18Z+0200,"All result tabs should allow you to export their contents in CSV, TSV, XML and plain text format. ",BenBor\r
--3,DataCleaner 1.6 Release,222,Metadata profile: Join test (relationships),DataCleaner-core,None,enhancement,,new,2008-09-10T17:53:01Z+0200,2008-10-23T17:47:57Z+0200,"First we need to establish a new kind of profile that is able to design it's own queries and have them executed. We can then use this new kind of profile to do interesting metadata profiling. The first use of this will be a (hidden) relationship profile. This profile will investigate which columns ''may be'' relationships.\r
--\r
--The metadata profile result should consist of suggestions for metadata changes. In the case above we would suggest incorporating certain relationships which the user can approve or deny.\r
--\r
--Another example of a metadata profile is a column type detection profile that will take the columns of CSV files and other simple data formats and suggest narrowed and more specific types. This last example is closely related to Ticket #77 for MetaModel though.",kasper\r
--2,DataCleaner 2.0 Release,114,Design an interface for uploading configurations,DataCleaner-webmonitor,None,enhancement,kasper,assigned,2008-04-04T18:09:46Z+0200,2008-04-10T18:57:05Z+0200,"Design an XML schema for profile and validation rule configurations to support uploading of these. Contents should be something like:\r
--\r
-- * Profile or validation rule class name\r
-- * Data source name\r
-- * Applied to which columns?\r
-- * Configuration properties (key/value pairs)\r
--\r
--Also it would be nice with a service method to query for configured data sources on the server and available profile and validation rules (to ensure client/server match).\r
--\r
--This XML schema will then be used as a service interface, but that's a whole other ticket.",kasper\r
--2,DataCleaner 2.0 Release,115,Persistable configurations,DataCleaner-webmonitor,None,enhancement,None,new,2008-04-04T18:11:10Z+0200,2008-04-04T18:11:10Z+0200,Create the Hibernate mapping for persisting configurations in the webmonitor so configurations can be loaded and run continously over time.,kasper\r
--2,DataCleaner 2.0 Release,117,Persistable results,DataCleaner-webmonitor,None,enhancement,kasper,assigned,2008-04-04T18:14:23Z+0200,2008-08-08T19:13:28Z+0200,Create the Hibernate mapping for persisting results in the webmonitor so results can be saved and shown continously over time.,kasper\r
--2,DataCleaner 2.0 Release,118,Present validation result in HTML,DataCleaner-webmonitor,None,enhancement,None,new,2008-04-04T18:15:37Z+0200,2008-04-04T18:15:37Z+0200,Display a validation result object in the webmonitor. Make it look as much as possible like the results in the GUI.,kasper\r
--2,DataCleaner 2.0 Release,119,Present profiler result in HTML,DataCleaner-webmonitor,None,enhancement,None,new,2008-04-04T18:16:09Z+0200,2008-10-24T03:01:08Z+0200,Display a profiler result object in the webmonitor. Make it look as much as possible like the results in the GUI.,kasper\r
--2,DataCleaner 2.0 Release,120,Create INotifier interface and EmailNotifier implementation,DataCleaner-webmonitor,None,enhancement,,new,2008-04-04T18:20:39Z+0200,2008-04-04T18:20:39Z+0200,"If a validation rule fails to validate (isValid() == false) then it should be able to configure notifiers that notify users about the validations.\r
--\r
--Create a INotifier interface that recieves results from scheduled jobs. Create an email implementation (EmailNotifier) that can notify to emailadresses, with various smtp-server settings and with various notification settings (notify on success? notify on fail?)",kasper\r
--3,DataCleaner 2.0 Release,123,Tiles2 JSTL-tags does not work in Tomcat 5.5,DataCleaner-webmonitor,None,defect,None,new,2008-04-07T22:44:15Z+0200,2008-04-07T23:30:31Z+0200,"The Tiles2-based views seems to work fine in Tomcat 6.0 but throws exceptions in 5.5:\r
--\r
--{{{\r
--[ERROR] Servlet.service() for servlet jsp threw exception\r
--java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.tiles.modules_jsp\r
--}}}\r
--\r
--Seems like it somehow can't load the tiles taglib.",kasper\r
--2,DataCleaner X.0 Release,183,Column tokenizing functionality,DataCleaner-core,None,enhancement,,new,2008-07-31T00:39:20Z+0200,2008-07-31T00:39:20Z+0200,"Tokenizing a column's values can be very valuable to inspect the quality of the data. We need to provide a temporary datastore for such tokenized values to enable the user to profile and validate each token individually.\r
--\r
--A simple example of a column that needs to be tokenized is a \"name\" column that consists of firstnames and lastnames. Additionally some persons might have middlenames so it should be possible to configure the tokenizer to identify which tokens should be mapped to which token-columns. For example:\r
--\r
--{{{\r
--John -> Firstname\r
--Doe  -> Lastname\r
--\r
--John  -> Firstname\r
--B.    -> Middle name\r
--Doe   -> Lastname\r
--}}}",kasper\r
--2,DataCleaner X.0 Release,216,Metadata graph,DataCleaner-gui,None,enhancement,,new,2008-09-04T08:11:32Z+0200,2008-09-04T08:11:32Z+0200,"Use [http://www.jgraph.com/ JGraph] or a similar graph framework to put together a diagram that visualizes the metadata of a database. The diagram should be somewhat similar to an E/R diagram:\r
--\r
-- * Tables as boxes.\r
-- * Columns as text within the boxes.\r
-- * Relations as lines between the boxes.\r
-- * Tables that have no relations should be grouped in a box/outline titled \"tables without relations\".\r
--\r
--Some ideas for how this graph could be used in the application:\r
-- * When right clicking on a schema or a table it should be an option to bring up the graph\r
-- * In the metadata tab there should be task panes similar to the result window, that can be opened and closed so that the user can either watch the current \"column metadata table\" or the new graph or both.\r
-- * It would also be very cool if the user could use the graph to select tables and columns for the profiler or validator and for previewing.\r
-- * Right-clicking on a relationship could bring up a \"preview joined\" option where the tables at the ends of the relationship are joined and previewed. Perhaps this idea could also expand to doing some simple metrics/profiling of the relationship.",kasper\r
--3,DataCleaner X.0 Release,45,Conditional ValidationRule,DataCleaner-core,None,enhancement,,new,2008-02-20T11:07:52Z+0100,2008-07-11T17:15:21Z+0200,"A ValidationRule that acts as a filter for another ValidationRule, only dispatching validation requests if a condition is true. The condition shall be configurable to issue other columns than the validation rule it dispatches to. Here are some examples of conditions (in pseudocode):\r
--\r
-- * if (CUSTOMERS.country == \"Denmark\") then run ValidationRule(CUSTOMERS.city appears in DanishCitiesDictionary).\r
-- * if (VEHICLE.motorized == true) then run ValidationRule(VEHICLE.horsepower is not null).",kasper\r
--3,DataCleaner X.0 Release,138,Create regex based on pattern finder's pattern,DataCleaner-core,None,enhancement,kasper,assigned,2008-05-16T13:57:02Z+0200,2008-07-11T17:18:33Z+0200,"The [DataCleanerPatternFinder pattern finder] profile will generate patterns that are easier to read than regular expressions but we need to be able to convert these to regular expressions in order to use them for validation (and thus bridging profiling and validation).\r
--\r
--This ticket is dedicated to creating a method for converting pattern finder's patterns into regexes:\r
--\r
-- * String toRegex(String pattern);\r
--\r
--The syntax for pattern finder's patterns is very simple:\r
--\r
-- * words are denoted using a's\r
-- * numbers are denoted as 9's\r
-- * mixed words (for example windows95) is denoted as ?'s\r
-- * delimitors (everything that's not literal or number chars) are denoted as-is.\r
--\r
--For example:\r
--\r
-- * I'd prefer not to have 2 use windows95!\r
-- * a'a aaaaaa aaa aa aaaa 9 aaa ?????????!",kasper\r
--3,DataCleaner X.0 Release,163,Referential integrity validation,DataCleaner-core,None,enhancement,None,new,2008-06-26T09:25:47Z+0200,2008-09-04T09:59:34Z+0200,"A validation rule where you select a primary and a foreign key for which to ensure that all foreign key values exist in the primary key value.\r
--\r
--Consider implementing this using the Dictionary framework for maximum reuse.",kasper\r
--3,DataCleaner X.0 Release,180,Compliancy with Mike 2.0 methodology,DataCleaner-gui,None,enhancement,,new,2008-07-29T10:47:21Z+0200,2008-07-29T10:47:21Z+0200,"Mike 2.0, the open source methodology for information development, has a guide to doing data profiling. I propose we ensure that we have the functionality needed to comply with what it suggests and that DataCleaner can work in the context of Mike 2.0.\r
--\r
--http://mike2.openmethodology.org/wiki/Data_Profiling\r
--\r
--Perhaps this could also work the other way around - so that the Mike 2.0 people could suggest readers to use DataCleaner for the data profiling activity in their methodology.",kasper\r
--3,DataCleaner X.0 Release,207,Log file enhancements,DataCleaner-core,None,enhancement,None,new,2008-08-19T04:38:44Z+0200,2008-08-19T04:38:44Z+0200,"The results displayed on the console should be saved in a log file.  Default mode should be that the log file is emptied at start of run.  This way it never grows too big, but still allows the users to send the full log file to the developers when a problem occurs.  \r
--\r
--You could also have a setup option that increases the level of detail that goes into the log file; when someone has a problem that you find hard to repeat, you can ask them to turn this option on and send you the log file, which now will have much more information.",BenBor\r
--3,DataCleaner X.0 Release,219,One-click Profiling,DataCleaner-core,None,enhancement,None,new,2008-09-05T01:22:26Z+0200,2008-09-05T11:23:15Z+0200,"When right-clicking on a table name, there should be an option of \"''full table profiling''\".  This option should automatically select all the possible profiling that can be executed over that table and run them, thus saving the user the trouble of selecting columns and assigning them to various profiling options.[[BR]]\r
--I guess that this also means that the user may need to have a \"Preferences\" tab somewhere where she can select the preferred options, for example: how many top/bottom values to display, what date format textual date columns take as default etc'.[[BR]]\r
--This option should also work if the user selects ''several'' tables from the list; this will give the user an easy way to profile several tables with one click.",BenBor\r
--3,DataCleaner X.0 Release,239,JTDS Driver Class,DataCleaner-gui,None,investigation,None,new,2008-10-15T16:53:18Z+0200,2008-10-21T20:36:14Z+0200,"Hello\r
--\r
--when we want to use the JTDS driver for Sql Server or sybase\r
--\r
--which driver class we need to select for use it?\r
--\r
--=== [ Microsoft SQL Server (jTDS Driver)] ===\r
--'''Driver Class:''' net.sourceforge.jtds.jdbc.Driver\r
--\r
--http://i34.tinypic.com/id7m1s.jpg",yves.courtois\r
--4,DataCleaner X.0 Release,148,Clipboard is overwriten during mvn install,DataCleaner-gui,None,defect,asbjorn,new,2008-06-07T13:21:19Z+0200,2008-07-24T14:36:03Z+0200,"I noticed some weird behaviour after building DataCleaner-gui. After running mvn clean install my clipboard was populated with the following content \r
--\r
--{{{\r
--f     o       o       b       ar\r
--0     1       2       3       4       5\r
--6             8       9       10      11\r
--12    13      14      15      16      17\r
--18    19      20      21      22      23\r
--24    25      26      27      28      29\r
--}}}\r
--",asbjorn\r
--4,DataCleaner X.0 Release,6,Profile: Possible natural keys,DataCleaner-core,None,enhancement,,new,2008-01-23T19:26:33Z+0100,2008-09-03T21:01:34Z+0200,A profile that runs through a table and tries to identify possible natural keys.,kasper\r
--4,DataCleaner X.0 Release,25,Name dictionaries,DataCleaner-resources,None,enhancement,,new,2008-02-06T20:54:55Z+0100,2008-09-23T12:11:52Z+0200,"Dictionary files for validating person names; First-, middle and surname will be relevant.",kasper\r
--4,DataCleaner X.0 Release,26,Company name dictionary,DataCleaner-resources,None,enhancement,,new,2008-02-06T20:56:28Z+0100,2008-09-04T09:52:19Z+0200,"Dictionary files for validating company names.\r
--Of course not all company names can be covered, but the files can be used as an example  for creating rules.",kasper\r
--3,MetaModel 1.1.1 Release,174,DBF file format support,MetaModel,None,enhancement,,new,2008-07-18T09:12:11Z+0200,2008-11-09T16:25:24Z+0100,"Implement support for DBF files, which are used by dBase (and other database-products as well).\r
--\r
--Refer to [/discussion/7/27 the discussion forum] for the original feature request on this one.",kasper\r
--2,MetaModel X.0 Release,157,Common Warehouse Metamodel (CWM) compliance,MetaModel,None,enhancement,None,new,2008-06-15T18:49:59Z+0200,2008-07-22T10:56:09Z+0200,"We need to take a thorough look at the Common Warehouse Metamodel (CWM) specification which defines entities that pertain to the data warehousing domain. The spec. is used by both commercial and Open Source BI vendors. Without any in-depth knowledge of the scec's technicalities I would presume that interoperability with the standard will be a really nice addition to MetaModel.\r
--\r
--Concretely we need to investigate the opportunities for:\r
-- * Importing schemas from CWM definitions.\r
-- * Exporting MetaModel schemas to CWM definitions.\r
--\r
--Information on CWM:\r
-- * [http://en.wikipedia.org/wiki/Common_Warehouse_Metamodel wikipedia article]\r
-- * [http://www.omg.org/cwm/ CWM specification @ OMG]",kasper\r
--2,MetaModel X.0 Release,182,execute updates on MetaModel,MetaModel,None,enhancement,,new,2008-07-29T16:41:38Z+0200,2008-07-30T15:29:05Z+0200,"Updates to datastores can have two fundamentally different forms:\r
-- * Updates to structure (schema, table, column, relationship)\r
-- * Updates to content (row)\r
--\r
--I think that we should therefore create an executeUpdate(Update update) method where the parameterized Update class has two subclasses:\r
-- * !SchemaUpdate\r
-- * !RowUpdate\r
--\r
--Following the style of the rest of the MetaModel API these should have constructors that indicate what to update.",kasper\r
--3,MetaModel X.0 Release,153,MS SQL Server integration testing,MetaModel,None,administrative task,,new,2008-06-15T00:15:48Z+0200,2008-10-22T17:49:42Z+0200,Construct integration tests for Microsofts SQL Server.,kasper\r
--3,MetaModel X.0 Release,154,IBM DB2 integration testing,MetaModel,None,administrative task,,new,2008-06-15T00:16:15Z+0200,2008-10-22T17:50:45Z+0200,Construct integration tests for IBM's DB2.,kasper\r
++__color__,__group__,ticket,summary,component,version,type,owner,status,created,_changetime,_description,_reporter
++2,DataCleaner 1.5 Release,232,Memory consumption is too extensive in Value Distribution and Time Analysis,DataCleaner-core,None,enhancement,,new,2008-10-01T10:55:19Z+0200,2008-10-21T20:29:55Z+0200,"We should have a look at the Value Distribution and Time Analysis profiles. They consume very large amounts of memory because they basicly save all values in maps for analysis.
++
++One way of improving this could be through caching. Another way could be through more appropriate (less verbose) storing of intermediate data (this looks obvious in Time Analysis profile). A third way could be by letting the profiles create queries themselves (related to metadata profiling, #222).",kasper
++3,DataCleaner 1.5 Release,145,Streamlined MacOS compability,DataCleaner-gui,None,enhancement,asbjorn,reopened,2008-06-03T09:59:58Z+0200,2008-10-06T22:20:43Z+0200,"This ticket regards making DataCleaner GUI act as a \"regular\" MacOS application, ie.:
++
++ * A fitting title (\"DataCleaner\") in the application (instead of \"dk.eobjects.datacleaner...\")
++ * An installable MacOS package.
++",asbjorn
++3,DataCleaner 1.5 Release,202,Pattern Finder improvements,DataCleaner-core,None,enhancement,darrenH,assigned,2008-08-19T04:27:12Z+0200,2008-09-16T09:21:56Z+0200,"__Pattern Finder suggestions__:
++ * have an option to ignore repeating spaces (so {{{\"aaa aaaaa\" and \"aaa         aaaaa\"}}} are counted as one pattern. 
++ * have an option to ignore case, and a different option to preserve case.
++ * have an option to treat all 'special' characters as one pattern (so \"aaa*\", \"aaa/\", \"aaa\\" etc' are counted as one pattern, maybe denoted \"aaaS\").
++ * have an option to treat all groups of characters as a single sub-pattern.  The idea is to be able to distinguish easily between names (say) that have two words and names that have more.  This option should have a single pattern for \"Kasper Sorensen\" and \"George Bush\" (the pattern should ideally be \"An An\", denoting any numbers of alpha, space, any number of alpha).  But \"Gorge W Bush\" will have the pattern \"An A An\".
++ * it should be possible to combine the above options",BenBor
++3,DataCleaner 1.5 Release,217,Commandline execution of .dcv and .dcp files,DataCleaner-core,None,enhancement,,new,2008-09-04T08:46:56Z+0200,2008-10-19T23:36:38Z+0200,"We should make a command line version of DataCleaner which could take in a .dcp or .dcv file, execute it and save the results in a file or a database (#117). This should ideally be done in DataCleaner core as it would be straight forward to reuse it in DataCleaner-webmonitor in the future then.",kasper
++3,DataCleaner 1.5 Release,230,Add custom seperator to CSV file dialog box,DataCleaner-gui,None,enhancement,michaelwc,assigned,2008-09-25T15:18:17Z+0200,2008-10-15T00:38:41Z+0200,Add the ability to use custom seperators in data files.,michaelwc
++3,DataCleaner 1.5 Release,198,Do scroll bars work for a very large result screen?,DataCleaner-gui,None,investigation,None,new,2008-08-19T01:14:16Z+0200,2008-09-20T20:15:23Z+0200,"I have a large table with many columns and I perform analysis on all the columns at once.  I get a large result screen.  The bug: scroll bars stop working; the only thing that works is the mouse's scroll-down button.  The bottom scroll bar doesn't work either, so I can't actually see the results.",BenBor
++2,DataCleaner 1.6 Release,105,Identify duplicate records,DataCleaner-core,None,enhancement,,new,2008-03-24T12:19:28Z+0100,2008-10-22T16:23:54Z+0200,"A way of identifying duplicate records in a table. Be aware that duplicate tables often don't have the same key, but certain fields will be the same. So we will pick out columns to check for similarity and return what is \"potential duplicate records\", since this is an area where human eyes are necessary in the last end anyway.
++
++Whether this needs to be a validation rule or a profile I haven't thought through... What do you think?",kasper
++2,DataCleaner 1.6 Release,242,Sampling in data selection,DataCleaner-gui,None,enhancement,,new,2008-10-23T17:44:36Z+0200,2008-10-23T17:44:36Z+0200,Based on [/discussion/1/46 this discussion] we need an option to filter data selections in the profiler and validator. This will allow users to try out their profile configurations on a subset of the data they want to use.,kasper
++3,DataCleaner 1.6 Release,206,Export results,DataCleaner-core,None,enhancement,None,new,2008-08-19T04:35:22Z+0200,2008-09-16T09:25:18Z+0200,"All result tabs should allow you to export their contents in CSV, TSV, XML and plain text format. ",BenBor
++3,DataCleaner 1.6 Release,222,Metadata profile: Join test (relationships),DataCleaner-core,None,enhancement,,new,2008-09-10T17:53:01Z+0200,2008-10-23T17:47:57Z+0200,"First we need to establish a new kind of profile that is able to design it's own queries and have them executed. We can then use this new kind of profile to do interesting metadata profiling. The first use of this will be a (hidden) relationship profile. This profile will investigate which columns ''may be'' relationships.
++
++The metadata profile result should consist of suggestions for metadata changes. In the case above we would suggest incorporating certain relationships which the user can approve or deny.
++
++Another example of a metadata profile is a column type detection profile that will take the columns of CSV files and other simple data formats and suggest narrowed and more specific types. This last example is closely related to Ticket #77 for MetaModel though.",kasper
++2,DataCleaner 2.0 Release,114,Design an interface for uploading configurations,DataCleaner-webmonitor,None,enhancement,kasper,assigned,2008-04-04T18:09:46Z+0200,2008-04-10T18:57:05Z+0200,"Design an XML schema for profile and validation rule configurations to support uploading of these. Contents should be something like:
++
++ * Profile or validation rule class name
++ * Data source name
++ * Applied to which columns?
++ * Configuration properties (key/value pairs)
++
++Also it would be nice with a service method to query for configured data sources on the server and available profile and validation rules (to ensure client/server match).
++
++This XML schema will then be used as a service interface, but that's a whole other ticket.",kasper
++2,DataCleaner 2.0 Release,115,Persistable configurations,DataCleaner-webmonitor,None,enhancement,None,new,2008-04-04T18:11:10Z+0200,2008-04-04T18:11:10Z+0200,Create the Hibernate mapping for persisting configurations in the webmonitor so configurations can be loaded and run continously over time.,kasper
++2,DataCleaner 2.0 Release,117,Persistable results,DataCleaner-webmonitor,None,enhancement,kasper,assigned,2008-04-04T18:14:23Z+0200,2008-08-08T19:13:28Z+0200,Create the Hibernate mapping for persisting results in the webmonitor so results can be saved and shown continously over time.,kasper
++2,DataCleaner 2.0 Release,118,Present validation result in HTML,DataCleaner-webmonitor,None,enhancement,None,new,2008-04-04T18:15:37Z+0200,2008-04-04T18:15:37Z+0200,Display a validation result object in the webmonitor. Make it look as much as possible like the results in the GUI.,kasper
++2,DataCleaner 2.0 Release,119,Present profiler result in HTML,DataCleaner-webmonitor,None,enhancement,None,new,2008-04-04T18:16:09Z+0200,2008-10-24T03:01:08Z+0200,Display a profiler result object in the webmonitor. Make it look as much as possible like the results in the GUI.,kasper
++2,DataCleaner 2.0 Release,120,Create INotifier interface and EmailNotifier implementation,DataCleaner-webmonitor,None,enhancement,,new,2008-04-04T18:20:39Z+0200,2008-04-04T18:20:39Z+0200,"If a validation rule fails to validate (isValid() == false) then it should be able to configure notifiers that notify users about the validations.
++
++Create a INotifier interface that recieves results from scheduled jobs. Create an email implementation (EmailNotifier) that can notify to emailadresses, with various smtp-server settings and with various notification settings (notify on success? notify on fail?)",kasper
++3,DataCleaner 2.0 Release,123,Tiles2 JSTL-tags does not work in Tomcat 5.5,DataCleaner-webmonitor,None,defect,None,new,2008-04-07T22:44:15Z+0200,2008-04-07T23:30:31Z+0200,"The Tiles2-based views seems to work fine in Tomcat 6.0 but throws exceptions in 5.5:
++
++{{{
++[ERROR] Servlet.service() for servlet jsp threw exception
++java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.tiles.modules_jsp
++}}}
++
++Seems like it somehow can't load the tiles taglib.",kasper
++2,DataCleaner X.0 Release,183,Column tokenizing functionality,DataCleaner-core,None,enhancement,,new,2008-07-31T00:39:20Z+0200,2008-07-31T00:39:20Z+0200,"Tokenizing a column's values can be very valuable to inspect the quality of the data. We need to provide a temporary datastore for such tokenized values to enable the user to profile and validate each token individually.
++
++A simple example of a column that needs to be tokenized is a \"name\" column that consists of firstnames and lastnames. Additionally some persons might have middlenames so it should be possible to configure the tokenizer to identify which tokens should be mapped to which token-columns. For example:
++
++{{{
++John -> Firstname
++Doe  -> Lastname
++
++John  -> Firstname
++B.    -> Middle name
++Doe   -> Lastname
++}}}",kasper
++2,DataCleaner X.0 Release,216,Metadata graph,DataCleaner-gui,None,enhancement,,new,2008-09-04T08:11:32Z+0200,2008-09-04T08:11:32Z+0200,"Use [http://www.jgraph.com/ JGraph] or a similar graph framework to put together a diagram that visualizes the metadata of a database. The diagram should be somewhat similar to an E/R diagram:
++
++ * Tables as boxes.
++ * Columns as text within the boxes.
++ * Relations as lines between the boxes.
++ * Tables that have no relations should be grouped in a box/outline titled \"tables without relations\".
++
++Some ideas for how this graph could be used in the application:
++ * When right clicking on a schema or a table it should be an option to bring up the graph
++ * In the metadata tab there should be task panes similar to the result window, that can be opened and closed so that the user can either watch the current \"column metadata table\" or the new graph or both.
++ * It would also be very cool if the user could use the graph to select tables and columns for the profiler or validator and for previewing.
++ * Right-clicking on a relationship could bring up a \"preview joined\" option where the tables at the ends of the relationship are joined and previewed. Perhaps this idea could also expand to doing some simple metrics/profiling of the relationship.",kasper
++3,DataCleaner X.0 Release,45,Conditional ValidationRule,DataCleaner-core,None,enhancement,,new,2008-02-20T11:07:52Z+0100,2008-07-11T17:15:21Z+0200,"A ValidationRule that acts as a filter for another ValidationRule, only dispatching validation requests if a condition is true. The condition shall be configurable to issue other columns than the validation rule it dispatches to. Here are some examples of conditions (in pseudocode):
++
++ * if (CUSTOMERS.country == \"Denmark\") then run ValidationRule(CUSTOMERS.city appears in DanishCitiesDictionary).
++ * if (VEHICLE.motorized == true) then run ValidationRule(VEHICLE.horsepower is not null).",kasper
++3,DataCleaner X.0 Release,138,Create regex based on pattern finder's pattern,DataCleaner-core,None,enhancement,kasper,assigned,2008-05-16T13:57:02Z+0200,2008-07-11T17:18:33Z+0200,"The [DataCleanerPatternFinder pattern finder] profile will generate patterns that are easier to read than regular expressions but we need to be able to convert these to regular expressions in order to use them for validation (and thus bridging profiling and validation).
++
++This ticket is dedicated to creating a method for converting pattern finder's patterns into regexes:
++
++ * String toRegex(String pattern);
++
++The syntax for pattern finder's patterns is very simple:
++
++ * words are denoted using a's
++ * numbers are denoted as 9's
++ * mixed words (for example windows95) is denoted as ?'s
++ * delimitors (everything that's not literal or number chars) are denoted as-is.
++
++For example:
++
++ * I'd prefer not to have 2 use windows95!
++ * a'a aaaaaa aaa aa aaaa 9 aaa ?????????!",kasper
++3,DataCleaner X.0 Release,163,Referential integrity validation,DataCleaner-core,None,enhancement,None,new,2008-06-26T09:25:47Z+0200,2008-09-04T09:59:34Z+0200,"A validation rule where you select a primary and a foreign key for which to ensure that all foreign key values exist in the primary key value.
++
++Consider implementing this using the Dictionary framework for maximum reuse.",kasper
++3,DataCleaner X.0 Release,180,Compliancy with Mike 2.0 methodology,DataCleaner-gui,None,enhancement,,new,2008-07-29T10:47:21Z+0200,2008-07-29T10:47:21Z+0200,"Mike 2.0, the open source methodology for information development, has a guide to doing data profiling. I propose we ensure that we have the functionality needed to comply with what it suggests and that DataCleaner can work in the context of Mike 2.0.
++
++http://mike2.openmethodology.org/wiki/Data_Profiling
++
++Perhaps this could also work the other way around - so that the Mike 2.0 people could suggest readers to use DataCleaner for the data profiling activity in their methodology.",kasper
++3,DataCleaner X.0 Release,207,Log file enhancements,DataCleaner-core,None,enhancement,None,new,2008-08-19T04:38:44Z+0200,2008-08-19T04:38:44Z+0200,"The results displayed on the console should be saved in a log file.  Default mode should be that the log file is emptied at start of run.  This way it never grows too big, but still allows the users to send the full log file to the developers when a problem occurs.  
++
++You could also have a setup option that increases the level of detail that goes into the log file; when someone has a problem that you find hard to repeat, you can ask them to turn this option on and send you the log file, which now will have much more information.",BenBor
++3,DataCleaner X.0 Release,219,One-click Profiling,DataCleaner-core,None,enhancement,None,new,2008-09-05T01:22:26Z+0200,2008-09-05T11:23:15Z+0200,"When right-clicking on a table name, there should be an option of \"''full table profiling''\".  This option should automatically select all the possible profiling that can be executed over that table and run them, thus saving the user the trouble of selecting columns and assigning them to various profiling options.[[BR]]
++I guess that this also means that the user may need to have a \"Preferences\" tab somewhere where she can select the preferred options, for example: how many top/bottom values to display, what date format textual date columns take as default etc'.[[BR]]
++This option should also work if the user selects ''several'' tables from the list; this will give the user an easy way to profile several tables with one click.",BenBor
++3,DataCleaner X.0 Release,239,JTDS Driver Class,DataCleaner-gui,None,investigation,None,new,2008-10-15T16:53:18Z+0200,2008-10-21T20:36:14Z+0200,"Hello
++
++when we want to use the JTDS driver for Sql Server or sybase
++
++which driver class we need to select for use it?
++
++=== [ Microsoft SQL Server (jTDS Driver)] ===
++'''Driver Class:''' net.sourceforge.jtds.jdbc.Driver
++
++http://i34.tinypic.com/id7m1s.jpg",yves.courtois
++4,DataCleaner X.0 Release,148,Clipboard is overwriten during mvn install,DataCleaner-gui,None,defect,asbjorn,new,2008-06-07T13:21:19Z+0200,2008-07-24T14:36:03Z+0200,"I noticed some weird behaviour after building DataCleaner-gui. After running mvn clean install my clipboard was populated with the following content 
++
++{{{
++f     o       o       b       ar
++0     1       2       3       4       5
++6             8       9       10      11
++12    13      14      15      16      17
++18    19      20      21      22      23
++24    25      26      27      28      29
++}}}
++",asbjorn
++4,DataCleaner X.0 Release,6,Profile: Possible natural keys,DataCleaner-core,None,enhancement,,new,2008-01-23T19:26:33Z+0100,2008-09-03T21:01:34Z+0200,A profile that runs through a table and tries to identify possible natural keys.,kasper
++4,DataCleaner X.0 Release,25,Name dictionaries,DataCleaner-resources,None,enhancement,,new,2008-02-06T20:54:55Z+0100,2008-09-23T12:11:52Z+0200,"Dictionary files for validating person names; First-, middle and surname will be relevant.",kasper
++4,DataCleaner X.0 Release,26,Company name dictionary,DataCleaner-resources,None,enhancement,,new,2008-02-06T20:56:28Z+0100,2008-09-04T09:52:19Z+0200,"Dictionary files for validating company names.
++Of course not all company names can be covered, but the files can be used as an example  for creating rules.",kasper
++3,MetaModel 1.1.1 Release,174,DBF file format support,MetaModel,None,enhancement,,new,2008-07-18T09:12:11Z+0200,2008-11-09T16:25:24Z+0100,"Implement support for DBF files, which are used by dBase (and other database-products as well).
++
++Refer to [/discussion/7/27 the discussion forum] for the original feature request on this one.",kasper
++2,MetaModel X.0 Release,157,Common Warehouse Metamodel (CWM) compliance,MetaModel,None,enhancement,None,new,2008-06-15T18:49:59Z+0200,2008-07-22T10:56:09Z+0200,"We need to take a thorough look at the Common Warehouse Metamodel (CWM) specification which defines entities that pertain to the data warehousing domain. The spec. is used by both commercial and Open Source BI vendors. Without any in-depth knowledge of the scec's technicalities I would presume that interoperability with the standard will be a really nice addition to MetaModel.
++
++Concretely we need to investigate the opportunities for:
++ * Importing schemas from CWM definitions.
++ * Exporting MetaModel schemas to CWM definitions.
++
++Information on CWM:
++ * [http://en.wikipedia.org/wiki/Common_Warehouse_Metamodel wikipedia article]
++ * [http://www.omg.org/cwm/ CWM specification @ OMG]",kasper
++2,MetaModel X.0 Release,182,execute updates on MetaModel,MetaModel,None,enhancement,,new,2008-07-29T16:41:38Z+0200,2008-07-30T15:29:05Z+0200,"Updates to datastores can have two fundamentally different forms:
++ * Updates to structure (schema, table, column, relationship)
++ * Updates to content (row)
++
++I think that we should therefore create an executeUpdate(Update update) method where the parameterized Update class has two subclasses:
++ * !SchemaUpdate
++ * !RowUpdate
++
++Following the style of the rest of the MetaModel API these should have constructors that indicate what to update.",kasper
++3,MetaModel X.0 Release,153,MS SQL Server integration testing,MetaModel,None,administrative task,,new,2008-06-15T00:15:48Z+0200,2008-10-22T17:49:42Z+0200,Construct integration tests for Microsofts SQL Server.,kasper
++3,MetaModel X.0 Release,154,IBM DB2 integration testing,MetaModel,None,administrative task,,new,2008-06-15T00:16:15Z+0200,2008-10-22T17:50:45Z+0200,Construct integration tests for IBM's DB2.,kasper
  3,MetaModel X.0 Release,225,Ingres database support,MetaModel,None,investigation,None,new,2008-09-19T13:20:05Z+0200,2008-10-13T09:22:23Z+0200,I just noticed that there are no mentioning of Ingres at the MetaModel database compliancy page. I think it would be good to try this database out and hopefully verify that it works with MetaModel and DataCleaner.,beno
diff --cc excel/pom.xml
@@@ -1,60 -1,60 +1,60 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-excel</artifactId>\r
--      <name>MetaModel module for Excel spreadsheets</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.poi</groupId>\r
--                      <artifactId>poi-ooxml</artifactId>\r
--                      <version>3.8</version>\r
--                      <exclusions>\r
--                              <exclusion>\r
--                                      <groupId>commons-logging</groupId>\r
--                                      <artifactId>commons-logging</artifactId>\r
--                              </exclusion>\r
--                              <exclusion>\r
--                                      <groupId>log4j</groupId>\r
--                                      <artifactId>log4j</artifactId>\r
--                              </exclusion>\r
--                              <exclusion>\r
--                                      <groupId>org.apache.geronimo.specs</groupId>\r
--                                      <artifactId>geronimo-stax-api_1.0_spec</artifactId>\r
--                              </exclusion>\r
--                              <exclusion>\r
--                                      <groupId>xml-apis</groupId>\r
--                                      <artifactId>xml-apis</artifactId>\r
--                              </exclusion>\r
--                      </exclusions>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>xml-apis</groupId>\r
--                      <artifactId>xml-apis</artifactId>\r
--                      <version>1.3.04</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.easymock</groupId>\r
--                      <artifactId>easymock</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-excel</artifactId>
++      <name>MetaModel module for Excel spreadsheets</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.poi</groupId>
++                      <artifactId>poi-ooxml</artifactId>
++                      <version>3.8</version>
++                      <exclusions>
++                              <exclusion>
++                                      <groupId>commons-logging</groupId>
++                                      <artifactId>commons-logging</artifactId>
++                              </exclusion>
++                              <exclusion>
++                                      <groupId>log4j</groupId>
++                                      <artifactId>log4j</artifactId>
++                              </exclusion>
++                              <exclusion>
++                                      <groupId>org.apache.geronimo.specs</groupId>
++                                      <artifactId>geronimo-stax-api_1.0_spec</artifactId>
++                              </exclusion>
++                              <exclusion>
++                                      <groupId>xml-apis</groupId>
++                                      <artifactId>xml-apis</artifactId>
++                              </exclusion>
++                      </exclusions>
++              </dependency>
++              <dependency>
++                      <groupId>xml-apis</groupId>
++                      <artifactId>xml-apis</artifactId>
++                      <version>1.3.04</version>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.easymock</groupId>
++                      <artifactId>easymock</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
@@@ -1,27 -1,27 +1,27 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-fixedwidth</artifactId>\r
--      <name>MetaModel module for fixed width value files</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-fixedwidth</artifactId>
++      <name>MetaModel module for fixed width value files</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
diff --cc full/pom.xml
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-full</artifactId>\r
--      <name>MetaModel full package, including DataContext factories</name>\r
--      <description>The full MetaModel package including all supported datastores</description>\r
--      <build>\r
--              <plugins>\r
--                      <plugin>\r
--                              <!-- Copy dependencies to lib/ folder -->\r
--                              <groupId>org.apache.maven.plugins</groupId>\r
--                              <artifactId>maven-dependency-plugin</artifactId>\r
--                              <executions>\r
--                                      <execution>\r
--                                              <id>copy-dependencies</id>\r
--                                              <phase>package</phase>\r
--                                              <goals>\r
--                                                      <goal>copy-dependencies</goal>\r
--                                              </goals>\r
--                                              <configuration>\r
--                                                      <includeScope>runtime</includeScope>\r
--                                                      <outputDirectory>${project.build.directory}/lib</outputDirectory>\r
--                                              </configuration>\r
--                                      </execution>\r
--                              </executions>\r
--                      </plugin>\r
--              </plugins>\r
--\r
--              <pluginManagement>\r
--                      <plugins>\r
--                              <plugin>\r
--                                      <!-- Ignore instructions for m2e (overrides eclipse warning) -->\r
--                                      <groupId>org.eclipse.m2e</groupId>\r
--                                      <artifactId>lifecycle-mapping</artifactId>\r
--                                      <version>1.0.0</version>\r
--                                      <configuration>\r
--                                              <lifecycleMappingMetadata>\r
--                                                      <pluginExecutions>\r
--                                                              <pluginExecution>\r
--                                                                      <pluginExecutionFilter>\r
--                                                                              <groupId>org.apache.maven.plugins</groupId>\r
--                                                                              <artifactId>maven-dependency-plugin</artifactId>\r
--                                                                              <versionRange>[2.0,)</versionRange>\r
--                                                                              <goals>\r
--                                                                                      <goal>copy-dependencies</goal>\r
--                                                                              </goals>\r
--                                                                      </pluginExecutionFilter>\r
--                                                                      <action>\r
--                                                                              <ignore />\r
--                                                                      </action>\r
--                                                              </pluginExecution>\r
--                                                      </pluginExecutions>\r
--                                              </lifecycleMappingMetadata>\r
--                                      </configuration>\r
--                              </plugin>\r
--                      </plugins>\r
--              </pluginManagement>\r
--      </build>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-pojo</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-csv</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-fixedwidth</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-mongodb</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-salesforce</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-sugarcrm</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-excel</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-access</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-jdbc</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-couchdb</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-openoffice</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-xml</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--\r
--              <!-- Test dependencies -->\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-full</artifactId>
++      <name>MetaModel full package, including DataContext factories</name>
++      <description>The full MetaModel package including all supported datastores</description>
++      <build>
++              <plugins>
++                      <plugin>
++                              <!-- Copy dependencies to lib/ folder -->
++                              <groupId>org.apache.maven.plugins</groupId>
++                              <artifactId>maven-dependency-plugin</artifactId>
++                              <executions>
++                                      <execution>
++                                              <id>copy-dependencies</id>
++                                              <phase>package</phase>
++                                              <goals>
++                                                      <goal>copy-dependencies</goal>
++                                              </goals>
++                                              <configuration>
++                                                      <includeScope>runtime</includeScope>
++                                                      <outputDirectory>${project.build.directory}/lib</outputDirectory>
++                                              </configuration>
++                                      </execution>
++                              </executions>
++                      </plugin>
++              </plugins>
++
++              <pluginManagement>
++                      <plugins>
++                              <plugin>
++                                      <!-- Ignore instructions for m2e (overrides eclipse warning) -->
++                                      <groupId>org.eclipse.m2e</groupId>
++                                      <artifactId>lifecycle-mapping</artifactId>
++                                      <version>1.0.0</version>
++                                      <configuration>
++                                              <lifecycleMappingMetadata>
++                                                      <pluginExecutions>
++                                                              <pluginExecution>
++                                                                      <pluginExecutionFilter>
++                                                                              <groupId>org.apache.maven.plugins</groupId>
++                                                                              <artifactId>maven-dependency-plugin</artifactId>
++                                                                              <versionRange>[2.0,)</versionRange>
++                                                                              <goals>
++                                                                                      <goal>copy-dependencies</goal>
++                                                                              </goals>
++                                                                      </pluginExecutionFilter>
++                                                                      <action>
++                                                                              <ignore />
++                                                                      </action>
++                                                              </pluginExecution>
++                                                      </pluginExecutions>
++                                              </lifecycleMappingMetadata>
++                                      </configuration>
++                              </plugin>
++                      </plugins>
++              </pluginManagement>
++      </build>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-pojo</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-csv</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-fixedwidth</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-mongodb</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-salesforce</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-sugarcrm</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-excel</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-access</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-jdbc</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-couchdb</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-openoffice</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-xml</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++
++              <!-- Test dependencies -->
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
@@@ -1,7 -1,7 +1,7 @@@
--"name","country"\r
--"Diecast Collectables",n/a\r
--Lego,DNK\r
--Motor Mint Distributors Inc.,n/a\r
--Maersk,DNK\r
--Budweiser,NLD\r
++"name","country"
++"Diecast Collectables",n/a
++Lego,DNK
++Motor Mint Distributors Inc.,n/a
++Maersk,DNK
++Budweiser,NLD
  "Iberia Gift Imports, Corp.",n/a
diff --cc jdbc/pom.xml
@@@ -1,82 -1,82 +1,82 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-jdbc</artifactId>\r
--      <name>MetaModel module for relational JDBC databases</name>\r
--\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>commons-pool</groupId>\r
--                      <artifactId>commons-pool</artifactId>\r
--              </dependency>\r
--              \r
--              <!-- Test dependencies -->\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-log4j12</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.easymock</groupId>\r
--                      <artifactId>easymock</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--\r
--              <!-- Various freely available database drivers -->\r
--              <dependency>\r
--                      <groupId>hsqldb</groupId>\r
--                      <artifactId>hsqldb</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>com.h2database</groupId>\r
--                      <artifactId>h2</artifactId>\r
--                      <version>1.3.160</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.derby</groupId>\r
--                      <artifactId>derby</artifactId>\r
--                      <version>10.8.2.2</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>postgresql</groupId>\r
--                      <artifactId>postgresql</artifactId>\r
--                      <version>9.1-901.jdbc4</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>mysql</groupId>\r
--                      <artifactId>mysql-connector-java</artifactId>\r
--                      <version>5.1.18</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.xerial</groupId>\r
--                      <artifactId>sqlite-jdbc</artifactId>\r
--                      <version>3.7.2</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>net.sourceforge.jtds</groupId>\r
--                      <artifactId>jtds</artifactId>\r
--                      <version>1.2.4</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-jdbc</artifactId>
++      <name>MetaModel module for relational JDBC databases</name>
++
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>commons-pool</groupId>
++                      <artifactId>commons-pool</artifactId>
++              </dependency>
++              
++              <!-- Test dependencies -->
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-log4j12</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.easymock</groupId>
++                      <artifactId>easymock</artifactId>
++                      <scope>test</scope>
++              </dependency>
++
++              <!-- Various freely available database drivers -->
++              <dependency>
++                      <groupId>hsqldb</groupId>
++                      <artifactId>hsqldb</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>com.h2database</groupId>
++                      <artifactId>h2</artifactId>
++                      <version>1.3.160</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.derby</groupId>
++                      <artifactId>derby</artifactId>
++                      <version>10.8.2.2</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>postgresql</groupId>
++                      <artifactId>postgresql</artifactId>
++                      <version>9.1-901.jdbc4</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>mysql</groupId>
++                      <artifactId>mysql-connector-java</artifactId>
++                      <version>5.1.18</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.xerial</groupId>
++                      <artifactId>sqlite-jdbc</artifactId>
++                      <version>3.7.2</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>net.sourceforge.jtds</groupId>
++                      <artifactId>jtds</artifactId>
++                      <version>1.2.4</version>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
diff --cc mongodb/pom.xml
@@@ -1,46 -1,46 +1,46 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-mongodb</artifactId>\r
--      <name>MetaModel module for MongoDB databases</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.mongodb</groupId>\r
--                      <artifactId>mongo-java-driver</artifactId>\r
--                      <version>2.9.1</version>\r
--              </dependency>\r
--\r
--              <!-- Test dependencies -->\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-jdbc</artifactId>\r
--                      <version>${project.version}</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.apache.derby</groupId>\r
--                      <artifactId>derby</artifactId>\r
--                      <version>10.8.1.2</version>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-mongodb</artifactId>
++      <name>MetaModel module for MongoDB databases</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.mongodb</groupId>
++                      <artifactId>mongo-java-driver</artifactId>
++                      <version>2.9.1</version>
++              </dependency>
++
++              <!-- Test dependencies -->
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-jdbc</artifactId>
++                      <version>${project.version}</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.apache.derby</groupId>
++                      <artifactId>derby</artifactId>
++                      <version>10.8.1.2</version>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
@@@ -1,31 -1,31 +1,31 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-openoffice</artifactId>\r
--      <name>MetaModel module for OpenOffice.org database files</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-jdbc</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>hsqldb</groupId>\r
--                      <artifactId>hsqldb</artifactId>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-openoffice</artifactId>
++      <name>MetaModel module for OpenOffice.org database files</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-jdbc</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>hsqldb</groupId>
++                      <artifactId>hsqldb</artifactId>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
diff --cc pojo/pom.xml
@@@ -1,27 -1,27 +1,27 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-pojo</artifactId>\r
--      <name>MetaModel module for collection and POJO-based DataContexts.</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--        <dependency>\r
--            <groupId>org.slf4j</groupId>\r
--            <artifactId>slf4j-nop</artifactId>\r
--            <scope>test</scope>\r
--        </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-pojo</artifactId>
++      <name>MetaModel module for collection and POJO-based DataContexts.</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++        <dependency>
++            <groupId>org.slf4j</groupId>
++            <artifactId>slf4j-nop</artifactId>
++            <scope>test</scope>
++        </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
index 0000000,0000000..8ed1e3d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,53 @@@
++/**
++ * 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.
++ */
++package org.apache.metamodel.pojo;
++
++/**
++ * Example POJO for unittesting
++ */
++public class Person {
++
++    private String name;
++    private int age;
++    
++    public Person() {
++    }
++    
++    public Person(String name, int age) {
++        this();
++        setName(name);
++        setAge(age);
++    }
++
++    public int getAge() {
++        return age;
++    }
++
++    public void setAge(int age) {
++        this.age = age;
++    }
++
++    public String getName() {
++        return name;
++    }
++
++    public void setName(String name) {
++        this.name = name;
++    }
++}
index 0000000,d893e4a..778ed1a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,161 +1,192 @@@
 -import junit.framework.TestCase;
 -
+ /**
+  * 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.
+  */
+ package org.apache.metamodel.pojo;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Collection;
+ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
++import junit.framework.TestCase;
++
++import org.apache.metamodel.DataContext;
+ import org.apache.metamodel.UpdateCallback;
+ import org.apache.metamodel.UpdateScript;
+ import org.apache.metamodel.data.DataSet;
+ import org.apache.metamodel.schema.ColumnType;
+ import org.apache.metamodel.schema.Schema;
+ import org.apache.metamodel.schema.Table;
+ import org.apache.metamodel.util.SimpleTableDef;
 -}
+ public class PojoDataContextTest extends TestCase {
++    public void testExampleScenario() throws Exception {
++        Collection<Person> persons = new ArrayList<Person>();
++        persons.add(new Person("Bono", 42));
++        persons.add(new Person("Elvis Presley", 42));
++
++        Map<String, Object> record1 = new HashMap<String, Object>();
++        record1.put("name", "Bruce Springsteen");
++        record1.put("title", "The Boss");
++
++        Map<String, Object> record2 = new HashMap<String, Object>();
++        record2.put("name", "Elvis Presley");
++        record2.put("title", "The King");
++
++        List<Map<String, ?>> titles = new ArrayList<Map<String, ?>>();
++        titles.add(record1);
++        titles.add(record2);
++
++        TableDataProvider<?> provider1 = new ObjectTableDataProvider<Person>("persons", Person.class, persons);
++        TableDataProvider<?> provider2 = new MapTableDataProvider(new SimpleTableDef("titles", new String[] { "name",
++                "title" }), titles);
++
++        DataContext dc = new PojoDataContext(Arrays.<TableDataProvider<?>> asList(provider1, provider2));
++
++        DataSet dataSet = dc.query().from("persons").innerJoin("titles").on("name", "name").selectAll().execute();
++
++        assertTrue(dataSet.next());
++        assertEquals("Row[values=[Elvis Presley, 42, Elvis Presley, The King]]", dataSet.getRow().toString());
++        assertFalse(dataSet.next());
++    }
++
+     public void testScenarioWithMap() throws Exception {
+         final SimpleTableDef tableDef = new SimpleTableDef("bar", new String[] { "col1", "col2", "col3" },
+                 new ColumnType[] { ColumnType.VARCHAR, ColumnType.INTEGER, ColumnType.BOOLEAN });
+         final List<Map<String, ?>> maps = new ArrayList<Map<String, ?>>();
+         maps.add(createMap("2", 1000, true));
+         maps.add(createMap("1", 1001, false));
+         maps.add(createMap("1", 1002, true));
+         maps.add(createMap("2", 1003, false));
+         maps.add(createMap("2", 1004, false));
+         final TableDataProvider<?> tableDataProvider = new MapTableDataProvider(tableDef, maps);
+         runScenario(tableDataProvider);
+     }
+     public void testScenarioWithArrays() throws Exception {
+         final SimpleTableDef tableDef = new SimpleTableDef("bar", new String[] { "col1", "col2", "col3" },
+                 new ColumnType[] { ColumnType.VARCHAR, ColumnType.INTEGER, ColumnType.BOOLEAN });
+         final List<Object[]> arrays = new ArrayList<Object[]>();
+         arrays.add(new Object[] { "2", 1000, true });
+         arrays.add(new Object[] { "1", 1001, false });
+         arrays.add(new Object[] { "1", 1002, true });
+         arrays.add(new Object[] { "2", 1003, false });
+         arrays.add(new Object[] { "2", 1004, false });
+         final TableDataProvider<?> tableDataProvider = new ArrayTableDataProvider(tableDef, arrays);
+         runScenario(tableDataProvider);
+     }
+     public void testScenarioWithObjects() throws Exception {
+         final Collection<FoobarBean> collection = new ArrayList<FoobarBean>();
+         collection.add(new FoobarBean("2", 1000, true));
+         collection.add(new FoobarBean("1", 1001, false));
+         collection.add(new FoobarBean("1", 1002, true));
+         collection.add(new FoobarBean("2", 1003, false));
+         collection.add(new FoobarBean("2", 1004, false));
+         final TableDataProvider<?> tableDataProvider = new ObjectTableDataProvider<FoobarBean>("bar", FoobarBean.class,
+                 collection);
+         runScenario(tableDataProvider);
+     }
+     private void runScenario(TableDataProvider<?> tableDataProvider) {
+         final PojoDataContext dc = new PojoDataContext("foo", tableDataProvider);
+         final Schema schema = dc.getDefaultSchema();
+         assertEquals(1, schema.getTableCount());
+         final Table table = schema.getTable(0);
+         assertEquals("foo.bar", table.getQualifiedLabel());
+         assertEquals("[col1, col2, col3]", Arrays.toString(table.getColumnNames()));
+         DataSet ds = dc.query().from("bar").select("col2").where("col3").eq(true).execute();
+         assertTrue(ds.next());
+         assertEquals("Row[values=[1000]]", ds.getRow().toString());
+         assertTrue(ds.next());
+         assertEquals("Row[values=[1002]]", ds.getRow().toString());
+         assertFalse(ds.next());
+         dc.executeUpdate(new UpdateScript() {
+             @Override
+             public void run(UpdateCallback callback) {
+                 callback.deleteFrom(table).where("col1").eq("1").execute();
+             }
+         });
+         ds = dc.query().from("bar").select("col1", "col2", "col3").execute();
+         assertTrue(ds.next());
+         assertEquals("Row[values=[2, 1000, true]]", ds.getRow().toString());
+         assertTrue(ds.next());
+         assertEquals("Row[values=[2, 1003, false]]", ds.getRow().toString());
+         assertTrue(ds.next());
+         assertEquals("Row[values=[2, 1004, false]]", ds.getRow().toString());
+         assertFalse(ds.next());
+         dc.executeUpdate(new UpdateScript() {
+             @Override
+             public void run(UpdateCallback callback) {
+                 callback.insertInto(table).value("col1", "3").value("col2", 1005).value("col3", true).execute();
+             }
+         });
+         ds = dc.query().from("bar").select("col1", "col2", "col3").execute();
+         assertTrue(ds.next());
+         assertEquals("Row[values=[2, 1000, true]]", ds.getRow().toString());
+         assertTrue(ds.next());
+         assertEquals("Row[values=[2, 1003, false]]", ds.getRow().toString());
+         assertTrue(ds.next());
+         assertEquals("Row[values=[2, 1004, false]]", ds.getRow().toString());
+         assertTrue(ds.next());
+         assertEquals("Row[values=[3, 1005, true]]", ds.getRow().toString());
+         assertFalse(ds.next());
+         dc.executeUpdate(new UpdateScript() {
+             @Override
+             public void run(UpdateCallback callback) {
+                 callback.dropTable(table).execute();
+             }
+         });
+         assertEquals(0, schema.getTableCount());
+         dc.executeUpdate(new UpdateScript() {
+             @Override
+             public void run(UpdateCallback callback) {
+                 callback.createTable(schema, "yo!").withColumn("foo").withColumn("bar").execute();
+                 callback.insertInto("yo!").value("foo", "1").value("bar", "2").execute();
+             }
+         });
+         assertEquals(1, schema.getTableCount());
+         ds = dc.query().from("yo!").select("foo", "bar").execute();
+         assertTrue(ds.next());
+         assertEquals("Row[values=[1, 2]]", ds.getRow().toString());
+         assertFalse(ds.next());
+     }
+     private Map<String, ?> createMap(Object a, Object b, Object c) {
+         Map<String, Object> map = new HashMap<String, Object>();
+         map.put("col1", a);
+         map.put("col2", b);
+         map.put("col3", c);
+         return map;
+     }
++}
@@@ -1,53 -1,53 +1,53 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-salesforce</artifactId>\r
--      <name>MetaModel module for Salesforce.com</name>\r
--\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>com.force.api</groupId>\r
--                      <artifactId>force-partner-api</artifactId>\r
--                      <version>24.0.0</version>\r
--                      <exclusions>\r
--                              <exclusion>\r
--                                      <artifactId>gson</artifactId>\r
--                                      <groupId>com.google.code.gson</groupId>\r
--                              </exclusion>\r
--                              <exclusion>\r
--                                      <artifactId>js</artifactId>\r
--                                      <groupId>rhino</groupId>\r
--                              </exclusion>\r
--                      </exclusions>\r
--              </dependency>\r
--\r
--              <!-- provided -->\r
--              <dependency>\r
--                      <groupId>javax.xml.ws</groupId>\r
--                      <artifactId>jaxws-api</artifactId>\r
--                      <version>2.0</version>\r
--                      <scope>provided</scope>\r
--              </dependency>\r
--\r
--              <!-- test -->\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-salesforce</artifactId>
++      <name>MetaModel module for Salesforce.com</name>
++
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>com.force.api</groupId>
++                      <artifactId>force-partner-api</artifactId>
++                      <version>24.0.0</version>
++                      <exclusions>
++                              <exclusion>
++                                      <artifactId>gson</artifactId>
++                                      <groupId>com.google.code.gson</groupId>
++                              </exclusion>
++                              <exclusion>
++                                      <artifactId>js</artifactId>
++                                      <groupId>rhino</groupId>
++                              </exclusion>
++                      </exclusions>
++              </dependency>
++
++              <!-- provided -->
++              <dependency>
++                      <groupId>javax.xml.ws</groupId>
++                      <artifactId>jaxws-api</artifactId>
++                      <version>2.0</version>
++                      <scope>provided</scope>
++              </dependency>
++
++              <!-- test -->
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-sugarcrm</artifactId>\r
--      <name>MetaModel module for SugarCRM</name>\r
--\r
--      <build>\r
--              <plugins>\r
--                      <plugin>\r
--                              <groupId>org.jvnet.jax-ws-commons</groupId>\r
--                              <artifactId>jaxws-maven-plugin</artifactId>\r
--                              <version>2.2</version>\r
--                              <executions>\r
--                                      <execution>\r
--                                              <id>import-sugarcrm-wsdl</id>\r
--                                              <phase>generate-sources</phase>\r
--                                              <goals>\r
--                                                      <goal>wsimport</goal>\r
--                                              </goals>\r
--                                              <inherited>false</inherited>\r
--                                              <configuration>\r
--                                                      <packageName>com.sugarcrm.ws.soap</packageName>\r
--                                                      <sourceDestDir>${project.build.directory}/generated/jaxws-sugarcrm</sourceDestDir>\r
--                                                      <bindingDirectory>src/jaxws/binding</bindingDirectory>\r
--                                                      <destDir>${project.build.directory}/generated/jaxws-sugarcrm</destDir>\r
--                                                      <verbose>true</verbose>\r
--                                              </configuration>\r
--                                      </execution>\r
--                              </executions>\r
--                              <dependencies>\r
--                                      <dependency>\r
--                                              <groupId>com.sun.xml.ws</groupId>\r
--                                              <artifactId>jaxws-tools</artifactId>\r
--                                              <version>2.1.7</version>\r
--                                              <exclusions>\r
--                                                      <exclusion>\r
--                                                              <groupId>org.jvnet.staxex</groupId>\r
--                                                              <artifactId>stax-ex</artifactId>\r
--                                                      </exclusion>\r
--                                              </exclusions>\r
--                                      </dependency>\r
--                                      <dependency>\r
--                                              <groupId>org.jvnet.staxex</groupId>\r
--                                              <artifactId>stax-ex</artifactId>\r
--                                              <version>1.2</version>\r
--                                              <exclusions>\r
--                                                      <exclusion>\r
--                                                              <groupId>javax.xml.stream</groupId>\r
--                                                              <artifactId>stax-api</artifactId>\r
--                                                      </exclusion>\r
--                                              </exclusions>\r
--                                      </dependency>\r
--                              </dependencies>\r
--                      </plugin>\r
--\r
--                      <plugin>\r
--                              <groupId>org.codehaus.mojo</groupId>\r
--                              <artifactId>build-helper-maven-plugin</artifactId>\r
--                              <version>1.8</version>\r
--                              <executions>\r
--                                      <execution>\r
--                                              <id>add-source</id>\r
--                                              <phase>generate-sources</phase>\r
--                                              <goals>\r
--                                                      <goal>add-source</goal>\r
--                                              </goals>\r
--                                              <configuration>\r
--                                                      <sources>\r
--                                                              <source>${project.build.directory}/generated/jaxws-sugarcrm</source>\r
--                                                      </sources>\r
--                                              </configuration>\r
--                                      </execution>\r
--                              </executions>\r
--                      </plugin>\r
--              </plugins>\r
--\r
--              <pluginManagement>\r
--                      <plugins>\r
--                              <plugin>\r
--                                      <!-- Ignore instructions for m2e (overrides eclipse warning) -->\r
--                                      <groupId>org.eclipse.m2e</groupId>\r
--                                      <artifactId>lifecycle-mapping</artifactId>\r
--                                      <version>1.0.0</version>\r
--                                      <configuration>\r
--                                              <lifecycleMappingMetadata>\r
--                                                      <pluginExecutions>\r
--                                                              <pluginExecution>\r
--                                                                      <pluginExecutionFilter>\r
--                                                                              <groupId>org.jvnet.jax-ws-commons</groupId>\r
--                                                                              <artifactId>jaxws-maven-plugin</artifactId>\r
--                                                                              <versionRange>[1.0,)</versionRange>\r
--                                                                              <goals>\r
--                                                                                      <goal>wsimport</goal>\r
--                                                                              </goals>\r
--                                                                      </pluginExecutionFilter>\r
--                                                                      <action>\r
--                                                                              <ignore />\r
--                                                                      </action>\r
--                                                              </pluginExecution>\r
--                                                      </pluginExecutions>\r
--                                              </lifecycleMappingMetadata>\r
--                                      </configuration>\r
--                              </plugin>\r
--                      </plugins>\r
--              </pluginManagement>\r
--      </build>\r
--\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>commons-codec</groupId>\r
--                      <artifactId>commons-codec</artifactId>\r
--              </dependency>\r
--\r
--              <!-- provided -->\r
--              <dependency>\r
--                      <groupId>javax.xml.ws</groupId>\r
--                      <artifactId>jaxws-api</artifactId>\r
--                      <version>2.0</version>\r
--                      <scope>provided</scope>\r
--              </dependency>\r
--\r
--              <!-- test -->\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-sugarcrm</artifactId>
++      <name>MetaModel module for SugarCRM</name>
++
++      <build>
++              <plugins>
++                      <plugin>
++                              <groupId>org.jvnet.jax-ws-commons</groupId>
++                              <artifactId>jaxws-maven-plugin</artifactId>
++                              <version>2.2</version>
++                              <executions>
++                                      <execution>
++                                              <id>import-sugarcrm-wsdl</id>
++                                              <phase>generate-sources</phase>
++                                              <goals>
++                                                      <goal>wsimport</goal>
++                                              </goals>
++                                              <inherited>false</inherited>
++                                              <configuration>
++                                                      <packageName>com.sugarcrm.ws.soap</packageName>
++                                                      <sourceDestDir>${project.build.directory}/generated/jaxws-sugarcrm</sourceDestDir>
++                                                      <bindingDirectory>src/jaxws/binding</bindingDirectory>
++                                                      <destDir>${project.build.directory}/generated/jaxws-sugarcrm</destDir>
++                                                      <verbose>true</verbose>
++                                              </configuration>
++                                      </execution>
++                              </executions>
++                              <dependencies>
++                                      <dependency>
++                                              <groupId>com.sun.xml.ws</groupId>
++                                              <artifactId>jaxws-tools</artifactId>
++                                              <version>2.1.7</version>
++                                              <exclusions>
++                                                      <exclusion>
++                                                              <groupId>org.jvnet.staxex</groupId>
++                                                              <artifactId>stax-ex</artifactId>
++                                                      </exclusion>
++                                              </exclusions>
++                                      </dependency>
++                                      <dependency>
++                                              <groupId>org.jvnet.staxex</groupId>
++                                              <artifactId>stax-ex</artifactId>
++                                              <version>1.2</version>
++                                              <exclusions>
++                                                      <exclusion>
++                                                              <groupId>javax.xml.stream</groupId>
++                                                              <artifactId>stax-api</artifactId>
++                                                      </exclusion>
++                                              </exclusions>
++                                      </dependency>
++                              </dependencies>
++                      </plugin>
++
++                      <plugin>
++                              <groupId>org.codehaus.mojo</groupId>
++                              <artifactId>build-helper-maven-plugin</artifactId>
++                              <version>1.8</version>
++                              <executions>
++                                      <execution>
++                                              <id>add-source</id>
++                                              <phase>generate-sources</phase>
++                                              <goals>
++                                                      <goal>add-source</goal>
++                                              </goals>
++                                              <configuration>
++                                                      <sources>
++                                                              <source>${project.build.directory}/generated/jaxws-sugarcrm</source>
++                                                      </sources>
++                                              </configuration>
++                                      </execution>
++                              </executions>
++                      </plugin>
++              </plugins>
++
++              <pluginManagement>
++                      <plugins>
++                              <plugin>
++                                      <!-- Ignore instructions for m2e (overrides eclipse warning) -->
++                                      <groupId>org.eclipse.m2e</groupId>
++                                      <artifactId>lifecycle-mapping</artifactId>
++                                      <version>1.0.0</version>
++                                      <configuration>
++                                              <lifecycleMappingMetadata>
++                                                      <pluginExecutions>
++                                                              <pluginExecution>
++                                                                      <pluginExecutionFilter>
++                                                                              <groupId>org.jvnet.jax-ws-commons</groupId>
++                                                                              <artifactId>jaxws-maven-plugin</artifactId>
++                                                                              <versionRange>[1.0,)</versionRange>
++                                                                              <goals>
++                                                                                      <goal>wsimport</goal>
++                                                                              </goals>
++                                                                      </pluginExecutionFilter>
++                                                                      <action>
++                                                                              <ignore />
++                                                                      </action>
++                                                              </pluginExecution>
++                                                      </pluginExecutions>
++                                              </lifecycleMappingMetadata>
++                                      </configuration>
++                              </plugin>
++                      </plugins>
++              </pluginManagement>
++      </build>
++
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>commons-codec</groupId>
++                      <artifactId>commons-codec</artifactId>
++              </dependency>
++
++              <!-- provided -->
++              <dependency>
++                      <groupId>javax.xml.ws</groupId>
++                      <artifactId>jaxws-api</artifactId>
++                      <version>2.0</version>
++                      <scope>provided</scope>
++              </dependency>
++
++              <!-- test -->
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
--<?xml version='1.0' encoding='UTF-8' ?>\r
--\r
--<!-- Schema for the SOAP/1.1 encoding\r
--\r
--Portions © 2001 DevelopMentor. \r
--© 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.  \r
-- \r
--This document is governed by the W3C Software License [1] as described in the FAQ [2].\r
--[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\r
--[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD \r
--By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:\r
--\r
--Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:\r
--\r
--1.  The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. \r
--\r
--2.  Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" \r
--\r
--3.  Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)   \r
--\r
--Original W3C files; http://www.w3.org/2001/06/soap-encoding\r
--Changes made: \r
--     - reverted namespace to http://schemas.xmlsoap.org/soap/encoding/\r
--     - reverted root to only allow 0 and 1 as lexical values\r
--       - removed default value from root attribute declaration\r
--\r
--THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.\r
--\r
--COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\r
--\r
--The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.\r
--\r
---->\r
--<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
--           xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"\r
--           targetNamespace="http://schemas.xmlsoap.org/soap/encoding/" >\r
--        \r
-- <xs:attribute name="root" >\r
--   <xs:annotation>\r
--     <xs:documentation>\r
--         'root' can be used to distinguish serialization roots from other\r
--       elements that are present in a serialization but are not roots of\r
--       a serialized value graph \r
--       </xs:documentation>\r
--   </xs:annotation>\r
--   <xs:simpleType>\r
--     <xs:restriction base='xs:boolean'>\r
--         <xs:pattern value='0|1' />\r
--       </xs:restriction>\r
--   </xs:simpleType>\r
-- </xs:attribute>\r
--\r
--  <xs:attributeGroup name="commonAttributes" >\r
--    <xs:annotation>\r
--        <xs:documentation>\r
--          Attributes common to all elements that function as accessors or \r
--        represent independent (multi-ref) values.  The href attribute is\r
--        intended to be used in a manner like CONREF.  That is, the element\r
--        content should be empty iff the href attribute appears\r
--        </xs:documentation>\r
--      </xs:annotation>\r
--    <xs:attribute name="id" type="xs:ID" />\r
--    <xs:attribute name="href" type="xs:anyURI" />\r
--    <xs:anyAttribute namespace="##other" processContents="lax" />\r
--  </xs:attributeGroup>\r
--\r
--  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->\r
--       \r
--  <!-- Array attributes. Needed to give the type and dimensions of an array's contents, and the offset for partially-transmitted arrays. -->\r
--   \r
--  <xs:simpleType name="arrayCoordinate" >\r
--    <xs:restriction base="xs:string" />\r
--  </xs:simpleType>\r
--          \r
--  <xs:attribute name="arrayType" type="xs:string" />\r
--  <xs:attribute name="offset" type="tns:arrayCoordinate" />\r
--  \r
--  <xs:attributeGroup name="arrayAttributes" >\r
--    <xs:attribute ref="tns:arrayType" />\r
--    <xs:attribute ref="tns:offset" />\r
--  </xs:attributeGroup>    \r
--  \r
--  <xs:attribute name="position" type="tns:arrayCoordinate" /> \r
--  \r
--  <xs:attributeGroup name="arrayMemberAttributes" >\r
--    <xs:attribute ref="tns:position" />\r
--  </xs:attributeGroup>    \r
--\r
--  <xs:group name="Array" >\r
--    <xs:sequence>\r
--      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />\r
--      </xs:sequence>\r
--  </xs:group>\r
--\r
--  <xs:element name="Array" type="tns:Array" />\r
--  <xs:complexType name="Array" >\r
--    <xs:annotation>\r
--        <xs:documentation>\r
--         'Array' is a complex type for accessors identified by position \r
--        </xs:documentation>\r
--      </xs:annotation>\r
--    <xs:group ref="tns:Array" minOccurs="0" />\r
--    <xs:attributeGroup ref="tns:arrayAttributes" />\r
--    <xs:attributeGroup ref="tns:commonAttributes" />\r
--  </xs:complexType> \r
--\r
--  <!-- 'Struct' is a complex type for accessors identified by name. \r
--       Constraint: No element may be have the same name as any other,\r
--       nor may any element have a maxOccurs > 1. -->\r
--   \r
--  <xs:element name="Struct" type="tns:Struct" />\r
--\r
--  <xs:group name="Struct" >\r
--    <xs:sequence>\r
--      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />\r
--      </xs:sequence>\r
--  </xs:group>\r
--\r
--  <xs:complexType name="Struct" >\r
--    <xs:group ref="tns:Struct" minOccurs="0" />\r
--    <xs:attributeGroup ref="tns:commonAttributes"/>\r
--  </xs:complexType> \r
--\r
--  <!-- 'Base64' can be used to serialize binary data using base64 encoding\r
--       as defined in RFC2045 but without the MIME line length limitation. -->\r
--\r
--  <xs:simpleType name="base64" >\r
--    <xs:restriction base="xs:base64Binary" />\r
--  </xs:simpleType>\r
--\r
-- <!-- Element declarations corresponding to each of the simple types in the \r
--      XML Schemas Specification. -->\r
--\r
--  <xs:element name="duration" type="tns:duration" />\r
--  <xs:complexType name="duration" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:duration" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="dateTime" type="tns:dateTime" />\r
--  <xs:complexType name="dateTime" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:dateTime" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--\r
--\r
--  <xs:element name="NOTATION" type="tns:NOTATION" />\r
--  <xs:complexType name="NOTATION" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:QName" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--  \r
--\r
--  <xs:element name="time" type="tns:time" />\r
--  <xs:complexType name="time" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:time" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="date" type="tns:date" />\r
--  <xs:complexType name="date" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:date" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="gYearMonth" type="tns:gYearMonth" />\r
--  <xs:complexType name="gYearMonth" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:gYearMonth" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="gYear" type="tns:gYear" />\r
--  <xs:complexType name="gYear" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:gYear" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="gMonthDay" type="tns:gMonthDay" />\r
--  <xs:complexType name="gMonthDay" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:gMonthDay" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="gDay" type="tns:gDay" />\r
--  <xs:complexType name="gDay" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:gDay" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="gMonth" type="tns:gMonth" />\r
--  <xs:complexType name="gMonth" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:gMonth" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--  \r
--  <xs:element name="boolean" type="tns:boolean" />\r
--  <xs:complexType name="boolean" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:boolean" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="base64Binary" type="tns:base64Binary" />\r
--  <xs:complexType name="base64Binary" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:base64Binary" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="hexBinary" type="tns:hexBinary" />\r
--  <xs:complexType name="hexBinary" >\r
--    <xs:simpleContent>\r
--     <xs:extension base="xs:hexBinary" >\r
--       <xs:attributeGroup ref="tns:commonAttributes" />\r
--     </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="float" type="tns:float" />\r
--  <xs:complexType name="float" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:float" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="double" type="tns:double" />\r
--  <xs:complexType name="double" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:double" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="anyURI" type="tns:anyURI" />\r
--  <xs:complexType name="anyURI" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:anyURI" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="QName" type="tns:QName" />\r
--  <xs:complexType name="QName" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:QName" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  \r
--  <xs:element name="string" type="tns:string" />\r
--  <xs:complexType name="string" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:string" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="normalizedString" type="tns:normalizedString" />\r
--  <xs:complexType name="normalizedString" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:normalizedString" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="token" type="tns:token" />\r
--  <xs:complexType name="token" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:token" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="language" type="tns:language" />\r
--  <xs:complexType name="language" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:language" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="Name" type="tns:Name" />\r
--  <xs:complexType name="Name" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:Name" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="NMTOKEN" type="tns:NMTOKEN" />\r
--  <xs:complexType name="NMTOKEN" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:NMTOKEN" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="NCName" type="tns:NCName" />\r
--  <xs:complexType name="NCName" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:NCName" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="NMTOKENS" type="tns:NMTOKENS" />\r
--  <xs:complexType name="NMTOKENS" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:NMTOKENS" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="ID" type="tns:ID" />\r
--  <xs:complexType name="ID" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:ID" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="IDREF" type="tns:IDREF" />\r
--  <xs:complexType name="IDREF" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:IDREF" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="ENTITY" type="tns:ENTITY" />\r
--  <xs:complexType name="ENTITY" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:ENTITY" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="IDREFS" type="tns:IDREFS" />\r
--  <xs:complexType name="IDREFS" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:IDREFS" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="ENTITIES" type="tns:ENTITIES" />\r
--  <xs:complexType name="ENTITIES" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:ENTITIES" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="decimal" type="tns:decimal" />\r
--  <xs:complexType name="decimal" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:decimal" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="integer" type="tns:integer" />\r
--  <xs:complexType name="integer" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:integer" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="nonPositiveInteger" type="tns:nonPositiveInteger" />\r
--  <xs:complexType name="nonPositiveInteger" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:nonPositiveInteger" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="negativeInteger" type="tns:negativeInteger" />\r
--  <xs:complexType name="negativeInteger" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:negativeInteger" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="long" type="tns:long" />\r
--  <xs:complexType name="long" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:long" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="int" type="tns:int" />\r
--  <xs:complexType name="int" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:int" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="short" type="tns:short" />\r
--  <xs:complexType name="short" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:short" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="byte" type="tns:byte" />\r
--  <xs:complexType name="byte" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:byte" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="nonNegativeInteger" type="tns:nonNegativeInteger" />\r
--  <xs:complexType name="nonNegativeInteger" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:nonNegativeInteger" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="unsignedLong" type="tns:unsignedLong" />\r
--  <xs:complexType name="unsignedLong" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:unsignedLong" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="unsignedInt" type="tns:unsignedInt" />\r
--  <xs:complexType name="unsignedInt" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:unsignedInt" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="unsignedShort" type="tns:unsignedShort" />\r
--  <xs:complexType name="unsignedShort" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:unsignedShort" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="unsignedByte" type="tns:unsignedByte" />\r
--  <xs:complexType name="unsignedByte" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:unsignedByte" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="positiveInteger" type="tns:positiveInteger" />\r
--  <xs:complexType name="positiveInteger" >\r
--    <xs:simpleContent>\r
--      <xs:extension base="xs:positiveInteger" >\r
--        <xs:attributeGroup ref="tns:commonAttributes" />\r
--      </xs:extension>\r
--    </xs:simpleContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="anyType" />\r
++<?xml version='1.0' encoding='UTF-8' ?>
++
++<!-- Schema for the SOAP/1.1 encoding
++
++Portions © 2001 DevelopMentor. 
++© 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.  
++ 
++This document is governed by the W3C Software License [1] as described in the FAQ [2].
++[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
++[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD 
++By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
++
++Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
++
++1.  The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. 
++
++2.  Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" 
++
++3.  Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)   
++
++Original W3C files; http://www.w3.org/2001/06/soap-encoding
++Changes made: 
++     - reverted namespace to http://schemas.xmlsoap.org/soap/encoding/
++     - reverted root to only allow 0 and 1 as lexical values
++       - removed default value from root attribute declaration
++
++THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
++
++COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
++
++The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
++
++-->
++<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
++           xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"
++           targetNamespace="http://schemas.xmlsoap.org/soap/encoding/" >
++        
++ <xs:attribute name="root" >
++   <xs:annotation>
++     <xs:documentation>
++         'root' can be used to distinguish serialization roots from other
++       elements that are present in a serialization but are not roots of
++       a serialized value graph 
++       </xs:documentation>
++   </xs:annotation>
++   <xs:simpleType>
++     <xs:restriction base='xs:boolean'>
++         <xs:pattern value='0|1' />
++       </xs:restriction>
++   </xs:simpleType>
++ </xs:attribute>
++
++  <xs:attributeGroup name="commonAttributes" >
++    <xs:annotation>
++        <xs:documentation>
++          Attributes common to all elements that function as accessors or 
++        represent independent (multi-ref) values.  The href attribute is
++        intended to be used in a manner like CONREF.  That is, the element
++        content should be empty iff the href attribute appears
++        </xs:documentation>
++      </xs:annotation>
++    <xs:attribute name="id" type="xs:ID" />
++    <xs:attribute name="href" type="xs:anyURI" />
++    <xs:anyAttribute namespace="##other" processContents="lax" />
++  </xs:attributeGroup>
++
++  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->
++       
++  <!-- Array attributes. Needed to give the type and dimensions of an array's contents, and the offset for partially-transmitted arrays. -->
++   
++  <xs:simpleType name="arrayCoordinate" >
++    <xs:restriction base="xs:string" />
++  </xs:simpleType>
++          
++  <xs:attribute name="arrayType" type="xs:string" />
++  <xs:attribute name="offset" type="tns:arrayCoordinate" />
++  
++  <xs:attributeGroup name="arrayAttributes" >
++    <xs:attribute ref="tns:arrayType" />
++    <xs:attribute ref="tns:offset" />
++  </xs:attributeGroup>    
++  
++  <xs:attribute name="position" type="tns:arrayCoordinate" /> 
++  
++  <xs:attributeGroup name="arrayMemberAttributes" >
++    <xs:attribute ref="tns:position" />
++  </xs:attributeGroup>    
++
++  <xs:group name="Array" >
++    <xs:sequence>
++      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
++      </xs:sequence>
++  </xs:group>
++
++  <xs:element name="Array" type="tns:Array" />
++  <xs:complexType name="Array" >
++    <xs:annotation>
++        <xs:documentation>
++         'Array' is a complex type for accessors identified by position 
++        </xs:documentation>
++      </xs:annotation>
++    <xs:group ref="tns:Array" minOccurs="0" />
++    <xs:attributeGroup ref="tns:arrayAttributes" />
++    <xs:attributeGroup ref="tns:commonAttributes" />
++  </xs:complexType> 
++
++  <!-- 'Struct' is a complex type for accessors identified by name. 
++       Constraint: No element may be have the same name as any other,
++       nor may any element have a maxOccurs > 1. -->
++   
++  <xs:element name="Struct" type="tns:Struct" />
++
++  <xs:group name="Struct" >
++    <xs:sequence>
++      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
++      </xs:sequence>
++  </xs:group>
++
++  <xs:complexType name="Struct" >
++    <xs:group ref="tns:Struct" minOccurs="0" />
++    <xs:attributeGroup ref="tns:commonAttributes"/>
++  </xs:complexType> 
++
++  <!-- 'Base64' can be used to serialize binary data using base64 encoding
++       as defined in RFC2045 but without the MIME line length limitation. -->
++
++  <xs:simpleType name="base64" >
++    <xs:restriction base="xs:base64Binary" />
++  </xs:simpleType>
++
++ <!-- Element declarations corresponding to each of the simple types in the 
++      XML Schemas Specification. -->
++
++  <xs:element name="duration" type="tns:duration" />
++  <xs:complexType name="duration" >
++    <xs:simpleContent>
++      <xs:extension base="xs:duration" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="dateTime" type="tns:dateTime" />
++  <xs:complexType name="dateTime" >
++    <xs:simpleContent>
++      <xs:extension base="xs:dateTime" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++
++
++  <xs:element name="NOTATION" type="tns:NOTATION" />
++  <xs:complexType name="NOTATION" >
++    <xs:simpleContent>
++      <xs:extension base="xs:QName" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++  
++
++  <xs:element name="time" type="tns:time" />
++  <xs:complexType name="time" >
++    <xs:simpleContent>
++      <xs:extension base="xs:time" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="date" type="tns:date" />
++  <xs:complexType name="date" >
++    <xs:simpleContent>
++      <xs:extension base="xs:date" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="gYearMonth" type="tns:gYearMonth" />
++  <xs:complexType name="gYearMonth" >
++    <xs:simpleContent>
++      <xs:extension base="xs:gYearMonth" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="gYear" type="tns:gYear" />
++  <xs:complexType name="gYear" >
++    <xs:simpleContent>
++      <xs:extension base="xs:gYear" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="gMonthDay" type="tns:gMonthDay" />
++  <xs:complexType name="gMonthDay" >
++    <xs:simpleContent>
++      <xs:extension base="xs:gMonthDay" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="gDay" type="tns:gDay" />
++  <xs:complexType name="gDay" >
++    <xs:simpleContent>
++      <xs:extension base="xs:gDay" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="gMonth" type="tns:gMonth" />
++  <xs:complexType name="gMonth" >
++    <xs:simpleContent>
++      <xs:extension base="xs:gMonth" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++  
++  <xs:element name="boolean" type="tns:boolean" />
++  <xs:complexType name="boolean" >
++    <xs:simpleContent>
++      <xs:extension base="xs:boolean" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="base64Binary" type="tns:base64Binary" />
++  <xs:complexType name="base64Binary" >
++    <xs:simpleContent>
++      <xs:extension base="xs:base64Binary" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="hexBinary" type="tns:hexBinary" />
++  <xs:complexType name="hexBinary" >
++    <xs:simpleContent>
++     <xs:extension base="xs:hexBinary" >
++       <xs:attributeGroup ref="tns:commonAttributes" />
++     </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="float" type="tns:float" />
++  <xs:complexType name="float" >
++    <xs:simpleContent>
++      <xs:extension base="xs:float" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="double" type="tns:double" />
++  <xs:complexType name="double" >
++    <xs:simpleContent>
++      <xs:extension base="xs:double" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="anyURI" type="tns:anyURI" />
++  <xs:complexType name="anyURI" >
++    <xs:simpleContent>
++      <xs:extension base="xs:anyURI" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="QName" type="tns:QName" />
++  <xs:complexType name="QName" >
++    <xs:simpleContent>
++      <xs:extension base="xs:QName" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  
++  <xs:element name="string" type="tns:string" />
++  <xs:complexType name="string" >
++    <xs:simpleContent>
++      <xs:extension base="xs:string" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="normalizedString" type="tns:normalizedString" />
++  <xs:complexType name="normalizedString" >
++    <xs:simpleContent>
++      <xs:extension base="xs:normalizedString" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="token" type="tns:token" />
++  <xs:complexType name="token" >
++    <xs:simpleContent>
++      <xs:extension base="xs:token" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="language" type="tns:language" />
++  <xs:complexType name="language" >
++    <xs:simpleContent>
++      <xs:extension base="xs:language" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="Name" type="tns:Name" />
++  <xs:complexType name="Name" >
++    <xs:simpleContent>
++      <xs:extension base="xs:Name" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="NMTOKEN" type="tns:NMTOKEN" />
++  <xs:complexType name="NMTOKEN" >
++    <xs:simpleContent>
++      <xs:extension base="xs:NMTOKEN" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="NCName" type="tns:NCName" />
++  <xs:complexType name="NCName" >
++    <xs:simpleContent>
++      <xs:extension base="xs:NCName" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="NMTOKENS" type="tns:NMTOKENS" />
++  <xs:complexType name="NMTOKENS" >
++    <xs:simpleContent>
++      <xs:extension base="xs:NMTOKENS" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="ID" type="tns:ID" />
++  <xs:complexType name="ID" >
++    <xs:simpleContent>
++      <xs:extension base="xs:ID" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="IDREF" type="tns:IDREF" />
++  <xs:complexType name="IDREF" >
++    <xs:simpleContent>
++      <xs:extension base="xs:IDREF" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="ENTITY" type="tns:ENTITY" />
++  <xs:complexType name="ENTITY" >
++    <xs:simpleContent>
++      <xs:extension base="xs:ENTITY" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="IDREFS" type="tns:IDREFS" />
++  <xs:complexType name="IDREFS" >
++    <xs:simpleContent>
++      <xs:extension base="xs:IDREFS" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="ENTITIES" type="tns:ENTITIES" />
++  <xs:complexType name="ENTITIES" >
++    <xs:simpleContent>
++      <xs:extension base="xs:ENTITIES" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="decimal" type="tns:decimal" />
++  <xs:complexType name="decimal" >
++    <xs:simpleContent>
++      <xs:extension base="xs:decimal" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="integer" type="tns:integer" />
++  <xs:complexType name="integer" >
++    <xs:simpleContent>
++      <xs:extension base="xs:integer" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="nonPositiveInteger" type="tns:nonPositiveInteger" />
++  <xs:complexType name="nonPositiveInteger" >
++    <xs:simpleContent>
++      <xs:extension base="xs:nonPositiveInteger" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="negativeInteger" type="tns:negativeInteger" />
++  <xs:complexType name="negativeInteger" >
++    <xs:simpleContent>
++      <xs:extension base="xs:negativeInteger" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="long" type="tns:long" />
++  <xs:complexType name="long" >
++    <xs:simpleContent>
++      <xs:extension base="xs:long" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="int" type="tns:int" />
++  <xs:complexType name="int" >
++    <xs:simpleContent>
++      <xs:extension base="xs:int" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="short" type="tns:short" />
++  <xs:complexType name="short" >
++    <xs:simpleContent>
++      <xs:extension base="xs:short" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="byte" type="tns:byte" />
++  <xs:complexType name="byte" >
++    <xs:simpleContent>
++      <xs:extension base="xs:byte" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="nonNegativeInteger" type="tns:nonNegativeInteger" />
++  <xs:complexType name="nonNegativeInteger" >
++    <xs:simpleContent>
++      <xs:extension base="xs:nonNegativeInteger" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="unsignedLong" type="tns:unsignedLong" />
++  <xs:complexType name="unsignedLong" >
++    <xs:simpleContent>
++      <xs:extension base="xs:unsignedLong" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="unsignedInt" type="tns:unsignedInt" />
++  <xs:complexType name="unsignedInt" >
++    <xs:simpleContent>
++      <xs:extension base="xs:unsignedInt" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="unsignedShort" type="tns:unsignedShort" />
++  <xs:complexType name="unsignedShort" >
++    <xs:simpleContent>
++      <xs:extension base="xs:unsignedShort" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="unsignedByte" type="tns:unsignedByte" />
++  <xs:complexType name="unsignedByte" >
++    <xs:simpleContent>
++      <xs:extension base="xs:unsignedByte" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="positiveInteger" type="tns:positiveInteger" />
++  <xs:complexType name="positiveInteger" >
++    <xs:simpleContent>
++      <xs:extension base="xs:positiveInteger" >
++        <xs:attributeGroup ref="tns:commonAttributes" />
++      </xs:extension>
++    </xs:simpleContent>
++  </xs:complexType>
++
++  <xs:element name="anyType" />
  </xs:schema>
--<?xml version="1.0" encoding="UTF-8" ?> \r
--<!-- \r
-- \r
--Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation\r
--All Rights Reserved\r
--\r
--License for WSDL Schema Files\r
--\r
--The Authors grant permission to copy and distribute the WSDL Schema \r
--Files in any medium without fee or royalty as long as this notice and \r
--license are distributed with them.  The originals of these files can \r
--be located at:\r
--\r
--http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd\r
--\r
--THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS \r
--OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT \r
--LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, \r
--NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, \r
--INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR \r
--RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.\r
--\r
--The name and trademarks of the Authors may NOT be used in any manner, \r
--including advertising or publicity pertaining to these files or any program \r
--or service that uses these files, written prior permission.  Title to copyright \r
--in these files will at all times remain with the Authors.\r
--\r
--No other rights are granted by implication, estoppel or otherwise.\r
--\r
--\r
----> \r
--<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
--           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"\r
--           targetNamespace="http://schemas.xmlsoap.org/wsdl/"\r
--           elementFormDefault="qualified" >\r
--   \r
--  <xs:complexType mixed="true" name="tDocumentation" >\r
--    <xs:sequence>\r
--      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />\r
--    </xs:sequence>\r
--  </xs:complexType>\r
--\r
--  <xs:complexType name="tDocumented" >\r
--    <xs:annotation>\r
--      <xs:documentation>\r
--      This type is extended by  component types to allow them to be documented\r
--      </xs:documentation>\r
--    </xs:annotation>\r
--    <xs:sequence>\r
--      <xs:element name="documentation" type="wsdl:tDocumentation" minOccurs="0" />\r
--    </xs:sequence>\r
--  </xs:complexType>\r
--       \r
--  <xs:complexType name="tExtensibleAttributesDocumented" abstract="true" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tDocumented" >\r
--        <xs:annotation>\r
--          <xs:documentation>\r
--          This type is extended by component types to allow attributes from other namespaces to be added.\r
--          </xs:documentation>\r
--        </xs:annotation>\r
--        <xs:anyAttribute namespace="##other" processContents="lax" />    \r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--\r
--  <xs:complexType name="tExtensibleDocumented" abstract="true" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tDocumented" >\r
--        <xs:annotation>\r
--          <xs:documentation>\r
--          This type is extended by component types to allow elements from other namespaces to be added.\r
--          </xs:documentation>\r
--        </xs:annotation>\r
--        <xs:sequence>\r
--          <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />\r
--        </xs:sequence>\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--\r
--  <xs:element name="definitions" type="wsdl:tDefinitions" >\r
--    <xs:key name="message" >\r
--      <xs:selector xpath="wsdl:message" />\r
--      <xs:field xpath="@name" />\r
--    </xs:key>\r
--    <xs:key name="portType" >\r
--      <xs:selector xpath="wsdl:portType" />\r
--      <xs:field xpath="@name" />\r
--    </xs:key>\r
--    <xs:key name="binding" >\r
--      <xs:selector xpath="wsdl:binding" />\r
--      <xs:field xpath="@name" />\r
--    </xs:key>\r
--    <xs:key name="service" >\r
--      <xs:selector xpath="wsdl:service" />\r
--      <xs:field xpath="@name" />\r
--    </xs:key>\r
--    <xs:key name="import" >\r
--      <xs:selector xpath="wsdl:import" />\r
--      <xs:field xpath="@namespace" />\r
--    </xs:key>\r
--  </xs:element>\r
--\r
--  <xs:group name="anyTopLevelOptionalElement" >\r
--    <xs:annotation>\r
--      <xs:documentation>\r
--      Any top level optional element allowed to appear more then once - any child of definitions element except wsdl:types. Any extensibility element is allowed in any place.\r
--      </xs:documentation>\r
--    </xs:annotation>\r
--    <xs:choice>\r
--      <xs:element name="import" type="wsdl:tImport" />\r
--      <xs:element name="types" type="wsdl:tTypes" />                     \r
--      <xs:element name="message"  type="wsdl:tMessage" >\r
--        <xs:unique name="part" >\r
--          <xs:selector xpath="wsdl:part" />\r
--          <xs:field xpath="@name" />\r
--        </xs:unique>\r
--      </xs:element>\r
--      <xs:element name="portType" type="wsdl:tPortType" />\r
--      <xs:element name="binding"  type="wsdl:tBinding" />\r
--      <xs:element name="service"  type="wsdl:tService" >\r
--        <xs:unique name="port" >\r
--          <xs:selector xpath="wsdl:port" />\r
--          <xs:field xpath="@name" />\r
--        </xs:unique>\r
--        </xs:element>\r
--    </xs:choice>\r
--  </xs:group>\r
--\r
--  <xs:complexType name="tDefinitions" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:sequence>\r
--          <xs:group ref="wsdl:anyTopLevelOptionalElement"  minOccurs="0"   maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--        <xs:attribute name="targetNamespace" type="xs:anyURI" use="optional" />\r
--        <xs:attribute name="name" type="xs:NCName" use="optional" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--   \r
--  <xs:complexType name="tImport" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >\r
--        <xs:attribute name="namespace" type="xs:anyURI" use="required" />\r
--        <xs:attribute name="location" type="xs:anyURI" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--   \r
--  <xs:complexType name="tTypes" >\r
--    <xs:complexContent>   \r
--      <xs:extension base="wsdl:tExtensibleDocumented" />\r
--    </xs:complexContent>   \r
--  </xs:complexType>\r
--     \r
--  <xs:complexType name="tMessage" >\r
--    <xs:complexContent>   \r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:sequence>\r
--          <xs:element name="part" type="wsdl:tPart" minOccurs="0" maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>   \r
--  </xs:complexType>\r
--\r
--  <xs:complexType name="tPart" >\r
--    <xs:complexContent>   \r
--      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--        <xs:attribute name="element" type="xs:QName" use="optional" />\r
--        <xs:attribute name="type" type="xs:QName" use="optional" />    \r
--      </xs:extension>\r
--    </xs:complexContent>   \r
--  </xs:complexType>\r
--\r
--  <xs:complexType name="tPortType" >\r
--    <xs:complexContent>   \r
--      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >\r
--        <xs:sequence>\r
--          <xs:element name="operation" type="wsdl:tOperation" minOccurs="0" maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>   \r
--  </xs:complexType>\r
--   \r
--  <xs:complexType name="tOperation" >\r
--    <xs:complexContent>   \r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--          <xs:sequence>\r
--          <xs:choice>\r
--            <xs:group ref="wsdl:request-response-or-one-way-operation" />\r
--            <xs:group ref="wsdl:solicit-response-or-notification-operation" />\r
--          </xs:choice>\r
--        </xs:sequence>\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--        <xs:attribute name="parameterOrder" type="xs:NMTOKENS" use="optional" />\r
--      </xs:extension>\r
--    </xs:complexContent>   \r
--  </xs:complexType>\r
--    \r
--  <xs:group name="request-response-or-one-way-operation" >\r
--    <xs:sequence>\r
--      <xs:element name="input" type="wsdl:tParam" />\r
--        <xs:sequence minOccurs='0' >\r
--          <xs:element name="output" type="wsdl:tParam" />\r
--              <xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded" />\r
--      </xs:sequence>\r
--    </xs:sequence>\r
--  </xs:group>\r
--\r
--  <xs:group name="solicit-response-or-notification-operation" >\r
--    <xs:sequence>\r
--      <xs:element name="output" type="wsdl:tParam" />\r
--        <xs:sequence minOccurs='0' >\r
--          <xs:element name="input" type="wsdl:tParam" />\r
--              <xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--    </xs:sequence>\r
--  </xs:group>\r
--        \r
--  <xs:complexType name="tParam" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >\r
--        <xs:attribute name="name" type="xs:NCName" use="optional" />\r
--        <xs:attribute name="message" type="xs:QName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--\r
--  <xs:complexType name="tFault" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >\r
--        <xs:attribute name="name" type="xs:NCName"  use="required" />\r
--        <xs:attribute name="message" type="xs:QName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--     \r
--  <xs:complexType name="tBinding" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:sequence>\r
--          <xs:element name="operation" type="wsdl:tBindingOperation" minOccurs="0" maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--        <xs:attribute name="type" type="xs:QName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--    \r
--  <xs:complexType name="tBindingOperationMessage" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:attribute name="name" type="xs:NCName" use="optional" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--  \r
--  <xs:complexType name="tBindingOperationFault" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--\r
--  <xs:complexType name="tBindingOperation" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:sequence>\r
--          <xs:element name="input" type="wsdl:tBindingOperationMessage" minOccurs="0" />\r
--          <xs:element name="output" type="wsdl:tBindingOperationMessage" minOccurs="0" />\r
--          <xs:element name="fault" type="wsdl:tBindingOperationFault" minOccurs="0" maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--     \r
--  <xs:complexType name="tService" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:sequence>\r
--          <xs:element name="port" type="wsdl:tPort" minOccurs="0" maxOccurs="unbounded" />\r
--        </xs:sequence>\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--     \r
--  <xs:complexType name="tPort" >\r
--    <xs:complexContent>\r
--      <xs:extension base="wsdl:tExtensibleDocumented" >\r
--        <xs:attribute name="name" type="xs:NCName" use="required" />\r
--        <xs:attribute name="binding" type="xs:QName" use="required" />\r
--      </xs:extension>\r
--    </xs:complexContent>\r
--  </xs:complexType>\r
--\r
--  <xs:attribute name="arrayType" type="xs:string" />\r
--  <xs:attribute name="required" type="xs:boolean" />\r
--  <xs:complexType name="tExtensibilityElement" abstract="true" >\r
--    <xs:attribute ref="wsdl:required" use="optional" />\r
--  </xs:complexType>\r
--\r
++<?xml version="1.0" encoding="UTF-8" ?> 
++<!-- 
++ 
++Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation
++All Rights Reserved
++
++License for WSDL Schema Files
++
++The Authors grant permission to copy and distribute the WSDL Schema 
++Files in any medium without fee or royalty as long as this notice and 
++license are distributed with them.  The originals of these files can 
++be located at:
++
++http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd
++
++THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS 
++OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT 
++LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
++NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, 
++INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR 
++RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
++
++The name and trademarks of the Authors may NOT be used in any manner, 
++including advertising or publicity pertaining to these files or any program 
++or service that uses these files, written prior permission.  Title to copyright 
++in these files will at all times remain with the Authors.
++
++No other rights are granted by implication, estoppel or otherwise.
++
++
++--> 
++<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
++           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
++           targetNamespace="http://schemas.xmlsoap.org/wsdl/"
++           elementFormDefault="qualified" >
++   
++  <xs:complexType mixed="true" name="tDocumentation" >
++    <xs:sequence>
++      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
++    </xs:sequence>
++  </xs:complexType>
++
++  <xs:complexType name="tDocumented" >
++    <xs:annotation>
++      <xs:documentation>
++      This type is extended by  component types to allow them to be documented
++      </xs:documentation>
++    </xs:annotation>
++    <xs:sequence>
++      <xs:element name="documentation" type="wsdl:tDocumentation" minOccurs="0" />
++    </xs:sequence>
++  </xs:complexType>
++       
++  <xs:complexType name="tExtensibleAttributesDocumented" abstract="true" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tDocumented" >
++        <xs:annotation>
++          <xs:documentation>
++          This type is extended by component types to allow attributes from other namespaces to be added.
++          </xs:documentation>
++        </xs:annotation>
++        <xs:anyAttribute namespace="##other" processContents="lax" />    
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++
++  <xs:complexType name="tExtensibleDocumented" abstract="true" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tDocumented" >
++        <xs:annotation>
++          <xs:documentation>
++          This type is extended by component types to allow elements from other namespaces to be added.
++          </xs:documentation>
++        </xs:annotation>
++        <xs:sequence>
++          <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
++        </xs:sequence>
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++
++  <xs:element name="definitions" type="wsdl:tDefinitions" >
++    <xs:key name="message" >
++      <xs:selector xpath="wsdl:message" />
++      <xs:field xpath="@name" />
++    </xs:key>
++    <xs:key name="portType" >
++      <xs:selector xpath="wsdl:portType" />
++      <xs:field xpath="@name" />
++    </xs:key>
++    <xs:key name="binding" >
++      <xs:selector xpath="wsdl:binding" />
++      <xs:field xpath="@name" />
++    </xs:key>
++    <xs:key name="service" >
++      <xs:selector xpath="wsdl:service" />
++      <xs:field xpath="@name" />
++    </xs:key>
++    <xs:key name="import" >
++      <xs:selector xpath="wsdl:import" />
++      <xs:field xpath="@namespace" />
++    </xs:key>
++  </xs:element>
++
++  <xs:group name="anyTopLevelOptionalElement" >
++    <xs:annotation>
++      <xs:documentation>
++      Any top level optional element allowed to appear more then once - any child of definitions element except wsdl:types. Any extensibility element is allowed in any place.
++      </xs:documentation>
++    </xs:annotation>
++    <xs:choice>
++      <xs:element name="import" type="wsdl:tImport" />
++      <xs:element name="types" type="wsdl:tTypes" />                     
++      <xs:element name="message"  type="wsdl:tMessage" >
++        <xs:unique name="part" >
++          <xs:selector xpath="wsdl:part" />
++          <xs:field xpath="@name" />
++        </xs:unique>
++      </xs:element>
++      <xs:element name="portType" type="wsdl:tPortType" />
++      <xs:element name="binding"  type="wsdl:tBinding" />
++      <xs:element name="service"  type="wsdl:tService" >
++        <xs:unique name="port" >
++          <xs:selector xpath="wsdl:port" />
++          <xs:field xpath="@name" />
++        </xs:unique>
++        </xs:element>
++    </xs:choice>
++  </xs:group>
++
++  <xs:complexType name="tDefinitions" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:sequence>
++          <xs:group ref="wsdl:anyTopLevelOptionalElement"  minOccurs="0"   maxOccurs="unbounded" />
++        </xs:sequence>
++        <xs:attribute name="targetNamespace" type="xs:anyURI" use="optional" />
++        <xs:attribute name="name" type="xs:NCName" use="optional" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++   
++  <xs:complexType name="tImport" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >
++        <xs:attribute name="namespace" type="xs:anyURI" use="required" />
++        <xs:attribute name="location" type="xs:anyURI" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++   
++  <xs:complexType name="tTypes" >
++    <xs:complexContent>   
++      <xs:extension base="wsdl:tExtensibleDocumented" />
++    </xs:complexContent>   
++  </xs:complexType>
++     
++  <xs:complexType name="tMessage" >
++    <xs:complexContent>   
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:sequence>
++          <xs:element name="part" type="wsdl:tPart" minOccurs="0" maxOccurs="unbounded" />
++        </xs:sequence>
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++      </xs:extension>
++    </xs:complexContent>   
++  </xs:complexType>
++
++  <xs:complexType name="tPart" >
++    <xs:complexContent>   
++      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++        <xs:attribute name="element" type="xs:QName" use="optional" />
++        <xs:attribute name="type" type="xs:QName" use="optional" />    
++      </xs:extension>
++    </xs:complexContent>   
++  </xs:complexType>
++
++  <xs:complexType name="tPortType" >
++    <xs:complexContent>   
++      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >
++        <xs:sequence>
++          <xs:element name="operation" type="wsdl:tOperation" minOccurs="0" maxOccurs="unbounded" />
++        </xs:sequence>
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++      </xs:extension>
++    </xs:complexContent>   
++  </xs:complexType>
++   
++  <xs:complexType name="tOperation" >
++    <xs:complexContent>   
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++          <xs:sequence>
++          <xs:choice>
++            <xs:group ref="wsdl:request-response-or-one-way-operation" />
++            <xs:group ref="wsdl:solicit-response-or-notification-operation" />
++          </xs:choice>
++        </xs:sequence>
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++        <xs:attribute name="parameterOrder" type="xs:NMTOKENS" use="optional" />
++      </xs:extension>
++    </xs:complexContent>   
++  </xs:complexType>
++    
++  <xs:group name="request-response-or-one-way-operation" >
++    <xs:sequence>
++      <xs:element name="input" type="wsdl:tParam" />
++        <xs:sequence minOccurs='0' >
++          <xs:element name="output" type="wsdl:tParam" />
++              <xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded" />
++      </xs:sequence>
++    </xs:sequence>
++  </xs:group>
++
++  <xs:group name="solicit-response-or-notification-operation" >
++    <xs:sequence>
++      <xs:element name="output" type="wsdl:tParam" />
++        <xs:sequence minOccurs='0' >
++          <xs:element name="input" type="wsdl:tParam" />
++              <xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded" />
++        </xs:sequence>
++    </xs:sequence>
++  </xs:group>
++        
++  <xs:complexType name="tParam" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >
++        <xs:attribute name="name" type="xs:NCName" use="optional" />
++        <xs:attribute name="message" type="xs:QName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++
++  <xs:complexType name="tFault" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleAttributesDocumented" >
++        <xs:attribute name="name" type="xs:NCName"  use="required" />
++        <xs:attribute name="message" type="xs:QName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++     
++  <xs:complexType name="tBinding" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:sequence>
++          <xs:element name="operation" type="wsdl:tBindingOperation" minOccurs="0" maxOccurs="unbounded" />
++        </xs:sequence>
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++        <xs:attribute name="type" type="xs:QName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++    
++  <xs:complexType name="tBindingOperationMessage" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:attribute name="name" type="xs:NCName" use="optional" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++  
++  <xs:complexType name="tBindingOperationFault" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++
++  <xs:complexType name="tBindingOperation" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:sequence>
++          <xs:element name="input" type="wsdl:tBindingOperationMessage" minOccurs="0" />
++          <xs:element name="output" type="wsdl:tBindingOperationMessage" minOccurs="0" />
++          <xs:element name="fault" type="wsdl:tBindingOperationFault" minOccurs="0" maxOccurs="unbounded" />
++        </xs:sequence>
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++     
++  <xs:complexType name="tService" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:sequence>
++          <xs:element name="port" type="wsdl:tPort" minOccurs="0" maxOccurs="unbounded" />
++        </xs:sequence>
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++     
++  <xs:complexType name="tPort" >
++    <xs:complexContent>
++      <xs:extension base="wsdl:tExtensibleDocumented" >
++        <xs:attribute name="name" type="xs:NCName" use="required" />
++        <xs:attribute name="binding" type="xs:QName" use="required" />
++      </xs:extension>
++    </xs:complexContent>
++  </xs:complexType>
++
++  <xs:attribute name="arrayType" type="xs:string" />
++  <xs:attribute name="required" type="xs:boolean" />
++  <xs:complexType name="tExtensibilityElement" abstract="true" >
++    <xs:attribute ref="wsdl:required" use="optional" />
++  </xs:complexType>
++
  </xs:schema>
diff --cc xml/pom.xml
@@@ -1,27 -1,27 +1,27 @@@
--<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
--      <parent>\r
--              <artifactId>MetaModel</artifactId>\r
--              <groupId>org.apache.metamodel</groupId>\r
--              <version>3.4.4-SNAPSHOT</version>\r
--      </parent>\r
--      <modelVersion>4.0.0</modelVersion>\r
--      <artifactId>MetaModel-xml</artifactId>\r
--      <name>MetaModel module for XML files</name>\r
--      <dependencies>\r
--              <dependency>\r
--                      <groupId>org.apache.metamodel</groupId>\r
--                      <artifactId>MetaModel-core</artifactId>\r
--                      <version>${project.version}</version>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>org.slf4j</groupId>\r
--                      <artifactId>slf4j-nop</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--              <dependency>\r
--                      <groupId>junit</groupId>\r
--                      <artifactId>junit</artifactId>\r
--                      <scope>test</scope>\r
--              </dependency>\r
--      </dependencies>\r
--</project>\r
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
++      <parent>
++              <artifactId>MetaModel</artifactId>
++              <groupId>org.apache.metamodel</groupId>
++              <version>3.4.4-SNAPSHOT</version>
++      </parent>
++      <modelVersion>4.0.0</modelVersion>
++      <artifactId>MetaModel-xml</artifactId>
++      <name>MetaModel module for XML files</name>
++      <dependencies>
++              <dependency>
++                      <groupId>org.apache.metamodel</groupId>
++                      <artifactId>MetaModel-core</artifactId>
++                      <version>${project.version}</version>
++              </dependency>
++              <dependency>
++                      <groupId>org.slf4j</groupId>
++                      <artifactId>slf4j-nop</artifactId>
++                      <scope>test</scope>
++              </dependency>
++              <dependency>
++                      <groupId>junit</groupId>
++                      <artifactId>junit</artifactId>
++                      <scope>test</scope>
++              </dependency>
++      </dependencies>
++</project>
@@@ -1,67 -1,67 +1,67 @@@
--<?xml version="1.0" encoding="UTF-8"?>\r
--<root>\r
--      <organization type="governmental">\r
--              <name>Company A</name>\r
--              <employees>\r
--                      <employee>\r
--                              <name>John Doe</name>\r
--                              <gender>M</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>Jane Doe</name>\r
--                              <gender>F</gender>\r
--                      </employee>\r
--              </employees>\r
--      </organization>\r
--\r
--      <organization type="company">\r
--              <name>Company B</name>\r
--              <employees>\r
--                      <employee>\r
--                              <name>Peter</name>\r
--                              <gender>M</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>Bob</name>\r
--                              <gender>M</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>Cindy</name>\r
--                              <gender>F</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>John</name>\r
--                              <gender>M</gender>\r
--                      </employee>\r
--              </employees>\r
--      </organization>\r
--\r
--      <organization type="company">\r
--              <name>Company C</name>\r
--              <employees group="management">\r
--                      <employee>\r
--                              <name>James</name>\r
--                              <gender>M</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>Suzy</name>\r
--                              <gender>F</gender>\r
--                      </employee>\r
--              </employees>\r
--              <employees group="staff">\r
--                      <employee>\r
--                              <name>Carla</name>\r
--                              <gender>F</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>Vincent</name>\r
--                              <gender>M</gender>\r
--                      </employee>\r
--                      <employee>\r
--                              <name>Barbara</name>\r
--                              <gender>F</gender>\r
--                      </employee>\r
--              </employees>\r
--      </organization>\r
--\r
++<?xml version="1.0" encoding="UTF-8"?>
++<root>
++      <organization type="governmental">
++              <name>Company A</name>
++              <employees>
++                      <employee>
++                              <name>John Doe</name>
++                              <gender>M</gender>
++                      </employee>
++                      <employee>
++                              <name>Jane Doe</name>
++                              <gender>F</gender>
++                      </employee>
++              </employees>
++      </organization>
++
++      <organization type="company">
++              <name>Company B</name>
++              <employees>
++                      <employee>
++                              <name>Peter</name>
++                              <gender>M</gender>
++                      </employee>
++                      <employee>
++                              <name>Bob</name>
++                              <gender>M</gender>
++                      </employee>
++                      <employee>
++                              <name>Cindy</name>
++                              <gender>F</gender>
++                      </employee>
++                      <employee>
++                              <name>John</name>
++                              <gender>M</gender>
++                      </employee>
++              </employees>
++      </organization>
++
++      <organization type="company">
++              <name>Company C</name>
++              <employees group="management">
++                      <employee>
++                              <name>James</name>
++                              <gender>M</gender>
++                      </employee>
++                      <employee>
++                              <name>Suzy</name>
++                              <gender>F</gender>
++                      </employee>
++              </employees>
++              <employees group="staff">
++                      <employee>
++                              <name>Carla</name>
++                              <gender>F</gender>
++                      </employee>
++                      <employee>
++                              <name>Vincent</name>
++                              <gender>M</gender>
++                      </employee>
++                      <employee>
++                              <name>Barbara</name>
++                              <gender>F</gender>
++                      </employee>
++              </employees>
++      </organization>
++
  </root>