You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ma...@apache.org on 2010/08/11 21:02:10 UTC

svn commit: r984537 - in /incubator/ace/trunk: ./ ace-range-api/ ace-range-api/src/ ace-range-api/src/main/ ace-range-api/src/main/java/ ace-range-api/src/main/java/org/ ace-range-api/src/main/java/org/apache/ ace-range-api/src/main/java/org/apache/ace...

Author: marrs
Date: Wed Aug 11 19:02:09 2010
New Revision: 984537

URL: http://svn.apache.org/viewvc?rev=984537&view=rev
Log:
Added a bundle for the range classes. Fixed two poms.

Added:
    incubator/ace/trunk/ace-range-api/
    incubator/ace/trunk/ace-range-api/osgi.bnd
    incubator/ace/trunk/ace-range-api/pom.xml
    incubator/ace/trunk/ace-range-api/src/
    incubator/ace/trunk/ace-range-api/src/main/
    incubator/ace/trunk/ace-range-api/src/main/java/
    incubator/ace/trunk/ace-range-api/src/main/java/org/
    incubator/ace/trunk/ace-range-api/src/main/java/org/apache/
    incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/
    incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/
    incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/Range.java
    incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/RangeIterator.java
    incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/SortedRangeSet.java
    incubator/ace/trunk/ace-range-api/src/test/
    incubator/ace/trunk/ace-range-api/src/test/java/
    incubator/ace/trunk/ace-range-api/src/test/java/org/
    incubator/ace/trunk/ace-range-api/src/test/java/org/apache/
    incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/
    incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/range/
    incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/range/SortedRangeSetTest.java
Modified:
    incubator/ace/trunk/ace-webui/pom.xml
    incubator/ace/trunk/pom.xml

Added: incubator/ace/trunk/ace-range-api/osgi.bnd
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-range-api/osgi.bnd?rev=984537&view=auto
==============================================================================
--- incubator/ace/trunk/ace-range-api/osgi.bnd (added)
+++ incubator/ace/trunk/ace-range-api/osgi.bnd Wed Aug 11 19:02:09 2010
@@ -0,0 +1,8 @@
+Bundle-Version>:\
+  ${pom.version}
+
+Bundle-SymbolicName:\
+  ${bundle.symbolicName}
+
+Export-Package:\
+  ${bundle.namespace}; version="${pom.version}"

Added: incubator/ace/trunk/ace-range-api/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-range-api/pom.xml?rev=984537&view=auto
==============================================================================
--- incubator/ace/trunk/ace-range-api/pom.xml (added)
+++ incubator/ace/trunk/ace-range-api/pom.xml Wed Aug 11 19:02:09 2010
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.ace</groupId>
+        <artifactId>ace-pom</artifactId>
+        <version>0.8.0-SNAPSHOT</version>
+        <relativePath>../pom/</relativePath>                
+    </parent>
+
+    <groupId>org.apache.ace</groupId>
+    <artifactId>ace-range-api</artifactId>
+    <version>0.8.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <name>Apache ACE - Range API</name>
+    
+    <properties>
+        <bundle.symbolicName>${namespace}.range</bundle.symbolicName>
+        <bundle.namespace>${namespace}.range</bundle.namespace>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>${groupId}</groupId>
+            <artifactId>ace-util</artifactId>
+            <version>${version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file

Added: incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/Range.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/Range.java?rev=984537&view=auto
==============================================================================
--- incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/Range.java (added)
+++ incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/Range.java Wed Aug 11 19:02:09 2010
@@ -0,0 +1,146 @@
+/*
+ * 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.ace.range;
+
+/**
+ * Class that captures a simple, modifiable range.
+ */
+public class Range
+{
+    private long m_low;
+    private long m_high;
+
+    /**
+     * Create a new range based on a string representation of that range.
+     *
+     * @param representation the string representation
+     */
+    public Range(String representation) {
+        int i = representation.indexOf('-');
+        if (i == -1) {
+            m_low = m_high = Long.parseLong(representation);
+        }
+        else {
+            long low = Long.parseLong(representation.substring(0, i));
+            long high = Long.parseLong(representation.substring(i + 1));
+            if (low <= high) {
+                m_low = low;
+                m_high = high;
+            }
+            else {
+                throw new IllegalArgumentException("illegal range");
+            }
+        }
+    }
+
+    /**
+     * Create a range that consists of a single number.
+     *
+     * @param number the number
+     */
+    public Range(long number) {
+        m_low = m_high = number;
+    }
+
+    /**
+     * Creates a range from a lower to a higher bound.
+     *
+     * @param low the lower bound
+     * @param high the higher bound
+     */
+    public Range(long low, long high) {
+        if (low <= high) {
+            m_low = low;
+            m_high = high;
+        }
+        else {
+            throw new IllegalArgumentException("illegal range");
+        }
+    }
+
+    /**
+     * Returns the lower bound.
+     *
+     * @return the lower bound
+     */
+    public long getLow() {
+        return m_low;
+    }
+
+    /**
+     * Sets a new lower bound. Will make sure the range stays valid,
+     * so if the higher bound is smaller than the new lower bound, it will
+     * be made equal to this new lower bound.
+     *
+     * @param low the new lower bound
+     */
+    public void setLow(long low) {
+        m_low = low;
+        if (m_high < m_low) {
+            m_high = m_low;
+        }
+    }
+
+    /**
+     * Returns the higher bound.
+     *
+     * @return the higher bound
+     */
+    public long getHigh() {
+        return m_high;
+    }
+
+    /**
+     * Sets a new higher bound. Will make sure the range stays valid,
+     * so if the lower bound is bigger than the new higher bound, it will
+     * be made equal to this new higher bound.
+     *
+     * @param high the new higher bound
+     */
+    public void setHigh(long high) {
+        m_high = high;
+        if (m_low > m_high) {
+            m_low = m_high;
+        }
+    }
+
+    /**
+     * Checks if a number falls within this range.
+     *
+     * @param number the number to check
+     * @return <code>true</code> if the number was inside the range
+     */
+    public boolean contains(long number) {
+        return (m_low <= number) && (m_high >= number);
+    }
+
+    /**
+     * Converts the range to a string representation that can be parsed
+     * back to a new <code>Range</code> object.
+     * @return
+     */
+    public String toRepresentation() {
+        if (m_low == m_high) {
+            return Long.toString(m_low);
+        }
+        else {
+            return Long.toString(m_low) + '-' + Long.toString(m_high);
+        }
+    }
+}
\ No newline at end of file

Added: incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/RangeIterator.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/RangeIterator.java?rev=984537&view=auto
==============================================================================
--- incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/RangeIterator.java (added)
+++ incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/RangeIterator.java Wed Aug 11 19:02:09 2010
@@ -0,0 +1,76 @@
+/*
+ * 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.ace.range;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * Iterates over a <code>SortedRangeSet</code>. Does not exactly implement
+ * the <code>Iterator</code> interface because we have <code>long</code>
+ * primitives in our collection instead of full-blown objects. This iterator
+ * is not thread-safe and results are unpredictable if the underlying set is
+ * modified.
+ */
+public class RangeIterator
+{
+    private final Iterator m_iterator;
+    private Range m_current;
+    private long m_number;
+
+    RangeIterator(Iterator iterator) {
+        m_iterator = iterator;
+    }
+
+    public boolean hasNext() {
+        if (m_current == null) {
+            return m_iterator.hasNext();
+        }
+        if (m_number == m_current.getHigh()) {
+            return m_iterator.hasNext();
+        }
+        else {
+            return true;
+        }
+    }
+
+    public long next() {
+        if (m_current == null) {
+            if (m_iterator.hasNext()) {
+                m_current = (Range) m_iterator.next();
+                m_number = m_current.getLow();
+                return m_number;
+            }
+        }
+        else {
+            if (m_number == m_current.getHigh()) {
+                if (m_iterator.hasNext()) {
+                    m_current = (Range) m_iterator.next();
+                    m_number = m_current.getLow();
+                    return m_number;
+                }
+            }
+            else {
+                m_number++;
+                return m_number;
+            }
+        }
+        throw new NoSuchElementException();
+    }
+}
\ No newline at end of file

Added: incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/SortedRangeSet.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/SortedRangeSet.java?rev=984537&view=auto
==============================================================================
--- incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/SortedRangeSet.java (added)
+++ incubator/ace/trunk/ace-range-api/src/main/java/org/apache/ace/range/SortedRangeSet.java Wed Aug 11 19:02:09 2010
@@ -0,0 +1,209 @@
+/*
+ * 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.ace.range;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.StringTokenizer;
+
+/**
+ * Collection that stores a sorted set of ranges and is able to represent them
+ * as a string.
+ */
+public class SortedRangeSet
+{
+    /**
+     * A static set which contains all possible values.
+     */
+    public final static SortedRangeSet FULL_SET = new SortedRangeSet(0 + "-" + Long.MAX_VALUE) {
+        public boolean contains(long number) {
+            return true;
+        }
+    };
+
+    private List m_ranges = new ArrayList();
+
+    /**
+     * Creates a new instance from a string representation.
+     *
+     * @param representation The string representation of a <code>SortedRangeSet</code>.
+     * @throws NumberFormatException If the string representation does not contain a valid <code>SortedRangeSet</code>.
+     */
+    public SortedRangeSet(String representation) {
+        StringTokenizer st = new StringTokenizer(representation, ",");
+        while (st.hasMoreTokens()) {
+            m_ranges.add(new Range(st.nextToken()));
+        }
+    }
+
+    /**
+     * Creates a new instance from an array of longs.
+     *
+     * @param items Array of longs
+     */
+    public SortedRangeSet(long[] items) {
+        // TODO: deal with items not being in ascending order
+        Range r = null;
+        for (int i = 0; i < items.length; i++) {
+            if (r == null) {
+                r = new Range(items[i]);
+            }
+            else {
+                if (items[i] == r.getHigh() + 1) {
+                    r.setHigh(items[i]);
+                }
+                else {
+                    m_ranges.add(r);
+                    r = new Range(items[i]);
+                }
+            }
+        }
+        if (r != null) {
+            m_ranges.add(r);
+        }
+    }
+
+    private SortedRangeSet() {
+    }
+
+    /**
+     * Retrieve a string representation of the <code>SortedRangeSet</code>.
+     *
+     * @return A string representation of the <code>SortedRangeSet</code>.
+     */
+    public String toRepresentation() {
+        StringBuffer result = new StringBuffer();
+        Iterator i = m_ranges.iterator();
+        while (i.hasNext()) {
+            Range r = (Range) i.next();
+            if (result.length() > 0) {
+                result.append(',');
+            }
+            result.append(r.toRepresentation());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Creates the difference between this set and <code>dest</code>, by (in set notation)<br>
+     * <code>result = dest \ this</code>,<br>
+     * that is, if <code>dest = {1, 2}</code> and <code>this = {2, 3}</code>, then
+     * <code>result = {1, 2} \ {2, 3} = {1}</code>
+     * @param dest The set from which this set should be 'set-minussed'.
+     * @return The resulting set after the diff.
+     */
+    public SortedRangeSet diffDest(SortedRangeSet dest) {
+        SortedRangeSet result = new SortedRangeSet();
+        RangeIterator i = dest.iterator();
+        while (i.hasNext()) {
+            long number = i.next();
+            if (!contains(number)) {
+                result.add(number);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Checks if a number falls within any range in this set.
+     *
+     * @param number the number to check
+     * @return <code>true</code> if the number was inside any range in this set
+     */
+    public boolean contains(long number) {
+        Iterator i = m_ranges.iterator();
+        while (i.hasNext()) {
+            Range r = (Range) i.next();
+            if (r.contains(number)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Adds a number to the set of ranges. Tries to be as smart as possible about it.
+     *
+     * @param number the number to add
+     */
+    private void add(long number) {
+        ListIterator i = m_ranges.listIterator();
+        while (i.hasNext()) {
+            int index = i.nextIndex();
+            Range r = (Range) i.next();
+            if (r.contains(number)) {
+                return;
+            }
+            long low = r.getLow();
+            long high = r.getHigh();
+            if (number < low) {
+                if (number == low - 1) {
+                    r.setLow(number);
+                    return;
+                }
+                else {
+                    Range nr = new Range(number);
+                    m_ranges.add(index, nr);
+                    return;
+                }
+            }
+            if (number == high + 1) {
+                r.setHigh(number);
+                if (i.hasNext()) {
+                    Range nr = (Range) i.next();
+                    if (number == low - 1) {
+                        r.setHigh(nr.getHigh());
+                        i.remove();
+                    }
+                }
+                return;
+            }
+        }
+        Range nr = new Range(number);
+        m_ranges.add(nr);
+    }
+
+    /**
+     * Returns an iterator that iterates over all the ranges in this set.
+     *
+     * @return a range iterator
+     */
+    public RangeIterator iterator() {
+        return new RangeIterator(m_ranges.iterator());
+    }
+
+    /**
+     * Returns the highest value present in any of the ranges in this <code>SortredRangeSet</code>.
+     *
+     * @return the highest value present in any of the ranges in this <code>SortredRangeSet</code>
+     *     or <code>0</code> if the <code>SortedRangeSet</code> is empty.
+     */
+    public long getHigh() {
+        int size = m_ranges.size();
+        if (size > 0) {
+            Range range = (Range) m_ranges.get(size - 1);
+            return range.getHigh();
+        }
+        else {
+            return 0;
+        }
+    }
+}
\ No newline at end of file

Added: incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/range/SortedRangeSetTest.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/range/SortedRangeSetTest.java?rev=984537&view=auto
==============================================================================
--- incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/range/SortedRangeSetTest.java (added)
+++ incubator/ace/trunk/ace-range-api/src/test/java/org/apache/ace/range/SortedRangeSetTest.java Wed Aug 11 19:02:09 2010
@@ -0,0 +1,78 @@
+/*
+ * 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.ace.range;
+
+import static org.apache.ace.test.utils.TestUtils.UNIT;
+
+import org.apache.ace.range.Range;
+import org.apache.ace.range.RangeIterator;
+import org.apache.ace.range.SortedRangeSet;
+import org.testng.annotations.Test;
+
+public class SortedRangeSetTest {
+    @Test(groups = { UNIT })
+    public void manipulateSimpleRanges() {
+        Range r1 = new Range("5");
+        assert r1.getLow() == 5 : "Lowest value should be 5";
+        assert r1.getHigh() == 5 : "Highest value should be 5";
+        assert r1.contains(5) : "Range should contain 5";
+        assert !r1.contains(4) : "Range should not contain 4";
+        assert !r1.contains(6) : "Range should not contain 6";
+        assert "5".equals(r1.toRepresentation()) : "Representation should be 5";
+        Range r2 = new Range("2-6");
+        assert r2.getLow() == 2 : "Lowest value should be 2";
+        assert r2.getHigh() == 6 : "Highest value should be 6";
+        assert r2.contains(6) : "Range should contain 6";
+        assert !r2.contains(7) : "Range should not contain 7";
+        assert !r2.contains(0) : "Range should not contain 0";
+        assert "2-6".equals(r2.toRepresentation()) : "Representation should be 2-6";
+        Range r3 = new Range(5);
+        assert r3.getLow() == 5 : "Lowest value should be 5";
+        assert r3.getHigh() == 5 : "Highest value should be 5";
+        Range r4 = new Range(6,8);
+        assert r4.getLow() == 6 : "Lowest value should be 6";
+        assert r4.getHigh() == 8 : "Highest value should be 8";
+        Range r5 = new Range(5);
+        r5.setLow(8);
+        assert r5.getHigh() == 8 : "Highest value should be 8";
+        r5.setHigh(2);
+        assert r5.getLow() == 2 : "Lowest value should be 2";
+    }
+
+    @Test(groups = { UNIT })
+    public void manipulateSortedRangeSets() {
+        SortedRangeSet s1 = new SortedRangeSet("1,3,5-8");
+        RangeIterator ri1 = s1.iterator();
+        assert ri1.next() == 1 : "Illegal value in range iterator";
+        assert ri1.next() == 3 : "Illegal value in range iterator";
+        assert ri1.next() == 5 : "Illegal value in range iterator";
+        assert ri1.next() == 6 : "Illegal value in range iterator";
+        assert ri1.next() == 7 : "Illegal value in range iterator";
+        assert ri1.next() == 8 : "Illegal value in range iterator";
+        assert !ri1.hasNext() : "There should not be more values in the iterator";
+        assert new SortedRangeSet("1-20").diffDest(new SortedRangeSet("5-25")).toRepresentation().equals("21-25") : "Result of diff should be 21-25";
+        assert new SortedRangeSet(new long[] {1,3,5,7,9}).diffDest(new SortedRangeSet("1-10")).toRepresentation().equals("2,4,6,8,10") : "Result of diff should be 2,4,6,8,10";
+        assert new SortedRangeSet("1-5,8,12").diffDest(new SortedRangeSet("1-5,7,9,12,20")).toRepresentation().equals("7,9,20") : "Result of diff should be 7,9,20";
+    }
+
+    @Test(groups = { UNIT }, expectedExceptions = IllegalArgumentException.class)
+    public void invalidRange() {
+        new SortedRangeSet("8-5");
+    }
+}

Modified: incubator/ace/trunk/ace-webui/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui/pom.xml?rev=984537&r1=984536&r2=984537&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui/pom.xml (original)
+++ incubator/ace/trunk/ace-webui/pom.xml Wed Aug 11 19:02:09 2010
@@ -117,7 +117,7 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>ace-client-repository</artifactId>
+            <artifactId>ace-client-repository-api</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>

Modified: incubator/ace/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/pom.xml?rev=984537&r1=984536&r2=984537&view=diff
==============================================================================
--- incubator/ace/trunk/pom.xml (original)
+++ incubator/ace/trunk/pom.xml Wed Aug 11 19:02:09 2010
@@ -41,15 +41,20 @@
             <modules>
                 <module>pom</module>
                 <module>ace-util</module>
+
+                <module>ace-range-api</module>
+
                 <module>ace-repository-api</module>
-                <module>ace-repository</module>
+                <module>ace-repository-impl</module>
                 <module>ace-repository-servlet</module>
                 <module>ace-repository-task</module>
 
                 <module>ace-consolelogger</module>
                 <module>ace-log</module>
+
                 <module>ace-discovery-api</module>
                 <module>ace-discovery-property</module>
+                <module>ace-discovery-upnp</module>
 
                 <module>ace-identification-api</module>
                 <module>ace-identification-property</module>
@@ -58,9 +63,10 @@
                 <module>ace-scheduler-api</module>
                 <module>ace-scheduler</module>
 
-                <module>ace-client-repository</module>
+                <module>ace-client-repository-api</module>
                 <module>ace-client-repository-configuration</module>
                 <module>ace-client-repository-impl</module>
+                <module>ace-client-repository-helper-base</module>
                 <module>ace-client-repository-helper-bundle</module>
                 <module>ace-client-repository-helper-user</module>
                 <module>ace-client-automation</module>
@@ -71,8 +77,9 @@
                 <module>ace-deployment-provider-base</module>
                 <module>ace-deployment-provider-filebased</module>
                 <module>ace-deployment-provider-repositorybased</module>
+
                 <module>ace-deployment-api</module>
-                <module>ace-deployment</module>
+                <module>ace-deployment-deploymentadmin</module>
                 <module>ace-deployment-task</module>
 
                 <module>ace-httplistener</module>