You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by kelvin goodson <ke...@thegoodsons.org.uk> on 2007/11/22 14:55:29 UTC

Re: svn commit: r597362 - in /incubator/tuscany/java/sdo: impl/src/main/java/org/apache/tuscany/sdo/helper/ impl/src/test/java/org/apache/tuscany/sdo/test/ impl/src/test/resources/ lib/src/main/java/org/apache/tuscany/sdo/api/

Hi Amita,
   thanks for this. I have just a couple of comments.  I think we
should introduce a constant in the Tuscany API to represent UNBOUNDED,
rather than using -1.  There's also the case of the cardinality of
global properties,  which is said to be UNSPECIFIED, and returns -2
from our implementation,  so is another case for a constant in the
API. We could add a global property to the schema, retrieve the
property using TypeHelper.getOpenContentProperty and make the
appropriate assertions.

The only other thing is a convention we have in the test cases, which
is not to use the singleton instances of helpers.  Instead we create a
new helper context in the setup method and use that,  Without doing
this you can get unpredictable cross talk from test cases when they
define metadata in the same namespace.  The behaviour may differ when
running a set of test cases (as in AllTests or running a maven build)
from when running the test individually,  and will depend on the
sequence in which the test cases are run.

If you could look at these points that would be great.
Thanks again, Kelvin.

On 22/11/2007, amita@apache.org <am...@apache.org> wrote:
> Author: amita
> Date: Thu Nov 22 01:59:07 2007
> New Revision: 597362
>
> URL: http://svn.apache.org/viewvc?rev=597362&view=rev
> Log:
> TUSCANY-1359 implement getLowerBound() and add test for upper/lower bound check
>
> Added:
>     incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/BoundsTestCase.java
>     incubator/tuscany/java/sdo/impl/src/test/resources/bounds.xsd
> Modified:
>     incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java
>     incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java
>     incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java
>     incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java
>
> Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java?rev=597362&r1=597361&r2=597362&view=diff
> ==============================================================================
> --- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java (original)
> +++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java Thu Nov 22 01:59:07 2007
> @@ -121,6 +121,10 @@
>          return ((EStructuralFeature)property).getUpperBound();
>      }
>
> +    public int getLowerBound(Property property) {
> +        return ((EStructuralFeature)property).getLowerBound();
> +    }
> +
>      public boolean isMany(Property property, DataObject context) {
>          return FeatureMapUtil.isMany((EObject)context, (EStructuralFeature)property);
>      }
>
> Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java?rev=597362&r1=597361&r2=597362&view=diff
> ==============================================================================
> --- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java (original)
> +++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java Thu Nov 22 01:59:07 2007
> @@ -43,6 +43,7 @@
>          suite.addTestSuite(FormTestCase.class);
>          suite.addTestSuite(HelperContextTestCase.class);
>          suite.addTestSuite(IsManyTestCase.class);
> +        suite.addTestSuite(BoundsTestCase.class);
>          suite.addTestSuite(JavaSerializeDeserializeTestCase.class);
>          suite.addTestSuite(MixedTypeTestCase.class);
>          suite.addTestSuite(NeverStaleChangeSummaryTestCase.class);
>
> Added: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/BoundsTestCase.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/BoundsTestCase.java?rev=597362&view=auto
> ==============================================================================
> --- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/BoundsTestCase.java (added)
> +++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/BoundsTestCase.java Thu Nov 22 01:59:07 2007
> @@ -0,0 +1,64 @@
> +/**
> + *
> + *  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.tuscany.sdo.test;
> +
> +import java.io.InputStream;
> +import java.net.URL;
> +
> +import org.apache.tuscany.sdo.api.SDOUtil;
> +
> +import junit.framework.TestCase;
> +
> +import commonj.sdo.*;
> +import commonj.sdo.helper.*;
> +
> +public class BoundsTestCase extends TestCase {
> +    private final String TEST_MODEL = "/bounds.xsd";
> +    private final String TEST_NAMESPACE = "http://www.example.com/bounds";
> +
> +    public void testBounds() {
> +        Type quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "OpenQuote");
> +        DataObject quote = DataFactory.INSTANCE.create(quoteType);
> +        assertEquals(2, SDOUtil.getUpperBound(quote.getInstanceProperty("symbol")));
> +        assertEquals(0, SDOUtil.getLowerBound(quote.getInstanceProperty("symbol")));
> +
> +        //XSD default value of maxOccurs and minOccurs is 1, unbounded returns -1 for maxOccurs
> +        Type quoteType2 = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "OpenQuote2");
> +        DataObject quote2 = DataFactory.INSTANCE.create(quoteType2);
> +        assertEquals(-1, SDOUtil.getUpperBound(quote2.getInstanceProperty("symbol")));
> +        assertEquals(1, SDOUtil.getLowerBound(quote2.getInstanceProperty("symbol")));
> +
> +        //XSD default value of maxOccurs and minOccurs is 1
> +        Type quoteType3 = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "OpenQuote3");
> +        DataObject quote3 = DataFactory.INSTANCE.create(quoteType3);
> +        assertEquals(1, SDOUtil.getUpperBound(quote3.getInstanceProperty("symbol")));
> +        assertEquals(1, SDOUtil.getLowerBound(quote3.getInstanceProperty("symbol")));
> +    }
> +
> +    protected void setUp() throws Exception {
> +        super.setUp();
> +
> +        // Populate the meta data for the test (Stock Quote) model
> +        URL url = getClass().getResource(TEST_MODEL);
> +        InputStream inputStream = url.openStream();
> +        XSDHelper.INSTANCE.define(inputStream, url.toString());
> +        inputStream.close();
> +    }
> +}
> \ No newline at end of file
>
> Added: incubator/tuscany/java/sdo/impl/src/test/resources/bounds.xsd
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/resources/bounds.xsd?rev=597362&view=auto
> ==============================================================================
> --- incubator/tuscany/java/sdo/impl/src/test/resources/bounds.xsd (added)
> +++ incubator/tuscany/java/sdo/impl/src/test/resources/bounds.xsd Thu Nov 22 01:59:07 2007
> @@ -0,0 +1,43 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +    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.
> + -->
> +<xsd:schema
> +  xmlns:bounds="http://www.example.com/bounds"
> +  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> +  targetNamespace="http://www.example.com/bounds">
> +
> +   <xsd:complexType name="OpenQuote">
> +       <xsd:sequence>
> +          <xsd:element name="symbol" type="xsd:string"  maxOccurs="2" minOccurs="0" />
> +       </xsd:sequence>
> +   </xsd:complexType>
> +
> +   <xsd:complexType name="OpenQuote2">
> +       <xsd:sequence>
> +          <xsd:element name="symbol" type="xsd:string"  maxOccurs="unbounded" />
> +       </xsd:sequence>
> +   </xsd:complexType>
> +
> +   <xsd:complexType name="OpenQuote3">
> +       <xsd:sequence>
> +          <xsd:element name="symbol" type="xsd:string"/>
> +       </xsd:sequence>
> +   </xsd:complexType>
> +
> +</xsd:schema>
>
> Modified: incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java?rev=597362&r1=597361&r2=597362&view=diff
> ==============================================================================
> --- incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java (original)
> +++ incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java Thu Nov 22 01:59:07 2007
> @@ -144,6 +144,13 @@
>    public int getUpperBound(Property property);
>
>    /**
> +   * Return the lower bound of the specified property or 1 by default
> +   * @param the property in question.
> +   * @return the lower bound.
> +   */
> +  public int getLowerBound(Property property);
> +
> +  /**
>     * Returns whether the Property is many-valued given the specified context.
>     * @param property The Property in question
>     * @param context The context to check whether the specified Property is many-valued
>
> Modified: incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java
> URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java?rev=597362&r1=597361&r2=597362&view=diff
> ==============================================================================
> --- incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java (original)
> +++ incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java Thu Nov 22 01:59:07 2007
> @@ -111,6 +111,14 @@
>    }
>
>    /**
> +   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getLowerBound(Property)}.
> +   */
> +  public static int getLowerBound(Property property)
> +  {
> +    return defaultSDOHelper.getLowerBound(property);
> +  }
> +
> +  /**
>     * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isMany(Property, DataObject)}.
>     */
>    public static boolean isMany(Property property, DataObject context)
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org