Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 246962
Collapse All | Expand All

(-)model/oclstdlib.uml (-2 / +2 lines)
Lines 1017-1027 Link Here
1017
        <ownedParameter xmi:id="_avUM36jQEdu4LJng8Rasow" name="set" type="_auE2s6jQEdu4LJng8Rasow"/>
1017
        <ownedParameter xmi:id="_avUM36jQEdu4LJng8Rasow" name="set" type="_auE2s6jQEdu4LJng8Rasow"/>
1018
      </ownedOperation>
1018
      </ownedOperation>
1019
      <ownedOperation xmi:id="_avUM4KjQEdu4LJng8Rasow" name="including" isQuery="true">
1019
      <ownedOperation xmi:id="_avUM4KjQEdu4LJng8Rasow" name="including" isQuery="true">
1020
        <ownedParameter xmi:id="_avUM4ajQEdu4LJng8Rasow" type="_auE2s6jQEdu4LJng8Rasow" direction="return"/>
1020
        <ownedParameter xmi:id="_avUM4ajQEdu4LJng8Rasow" type="_avUMsKjQEdu4LJng8Rasow" direction="return"/>
1021
        <ownedParameter xmi:id="_avUM4qjQEdu4LJng8Rasow" name="object" type="_awji1ajQEdu4LJng8Rasow"/>
1021
        <ownedParameter xmi:id="_avUM4qjQEdu4LJng8Rasow" name="object" type="_awji1ajQEdu4LJng8Rasow"/>
1022
      </ownedOperation>
1022
      </ownedOperation>
1023
      <ownedOperation xmi:id="_avUM46jQEdu4LJng8Rasow" name="excluding" isQuery="true">
1023
      <ownedOperation xmi:id="_avUM46jQEdu4LJng8Rasow" name="excluding" isQuery="true">
1024
        <ownedParameter xmi:id="_avUM5KjQEdu4LJng8Rasow" type="_auE2s6jQEdu4LJng8Rasow" direction="return"/>
1024
        <ownedParameter xmi:id="_avUM5KjQEdu4LJng8Rasow" type="_avUMsKjQEdu4LJng8Rasow" direction="return"/>
1025
        <ownedParameter xmi:id="_avUM5ajQEdu4LJng8Rasow" name="object" type="_awji1ajQEdu4LJng8Rasow"/>
1025
        <ownedParameter xmi:id="_avUM5ajQEdu4LJng8Rasow" name="object" type="_awji1ajQEdu4LJng8Rasow"/>
1026
      </ownedOperation>
1026
      </ownedOperation>
1027
      <ownedOperation xmi:id="_avUM5qjQEdu4LJng8Rasow" name="symmetricDifference" isQuery="true">
1027
      <ownedOperation xmi:id="_avUM5qjQEdu4LJng8Rasow" name="symmetricDifference" isQuery="true">
(-)src/org/eclipse/ocl/util/CollectionUtil.java (-6 / +8 lines)
Lines 469-476 Link Here
469
     */
469
     */
470
    public static <E> Collection<E> excluding(Collection<E> self, Object object) {
470
    public static <E> Collection<E> excluding(Collection<E> self, Object object) {
471
        Collection<E> result = null;
471
        Collection<E> result = null;
472
        if (self instanceof Set<?>) {
472
        if (self instanceof LinkedHashSet<?>) {
473
            result = createNewSet(self);
473
        	result = createNewOrderedSet(self);
474
        } else if (self instanceof Bag<?>) {
474
        } else if (self instanceof Bag<?>) {
475
            result = createNewBag(self);
475
            result = createNewBag(self);
476
        } else if (self instanceof List<?>) {
476
        } else if (self instanceof List<?>) {
Lines 480-486 Link Here
480
            }
480
            }
481
            return resultSeq;
481
            return resultSeq;
482
        } else {
482
        } else {
483
            result = createNewOrderedSet(self);
483
        	result = createNewSet(self);
484
        }
484
        }
485
485
486
        // non-sequences (bags remove all occurrences internally)
486
        // non-sequences (bags remove all occurrences internally)
Lines 530-541 Link Here
530
    public static <E> Collection<E> including(Collection<E> self, E object) {
530
    public static <E> Collection<E> including(Collection<E> self, E object) {
531
        Collection<E> result;
531
        Collection<E> result;
532
        
532
        
533
        if (self instanceof Set<?>) {
533
        if (self instanceof LinkedHashSet<?>) {
534
            result = createNewSet(self);
534
            result = createNewOrderedSet(self);
535
        } else if (self instanceof Bag<?>) {
535
        } else if (self instanceof Bag<?>) {
536
            result = createNewBag(self);
536
            result = createNewBag(self);
537
        } else {
537
        } else if (self instanceof List<?>) {
538
            result = createNewSequence(self);
538
            result = createNewSequence(self);
539
        } else {        
540
            result = createNewSet(self);
539
        }
541
        }
540
542
541
        result.add(object);
543
        result.add(object);
(-)src/org/eclipse/ocl/util/OCLStandardLibraryUtil.java (+6 lines)
Lines 959-964 Link Here
959
			case INDEX_OF :
959
			case INDEX_OF :
960
				return stdlib.getInteger();
960
				return stdlib.getInteger();
961
961
962
			case INCLUDING :
963
			case EXCLUDING :
962
			case APPEND :
964
			case APPEND :
963
			case PREPEND :
965
			case PREPEND :
964
				argType = args.get(0).getType();
966
				argType = args.get(0).getType();
Lines 1686-1691 Link Here
1686
			stdlib.getT(), "object")); //$NON-NLS-1$
1688
			stdlib.getT(), "object")); //$NON-NLS-1$
1687
		result.add(createBinaryOperation(uml, stdlib.getOrderedSet(),
1689
		result.add(createBinaryOperation(uml, stdlib.getOrderedSet(),
1688
			PREPEND_NAME, stdlib.getT(), "object"));//$NON-NLS-1$
1690
			PREPEND_NAME, stdlib.getT(), "object"));//$NON-NLS-1$
1691
		result.add(createBinaryOperation(uml, stdlib.getOrderedSet(),
1692
			INCLUDING_NAME, stdlib.getT(), "object"));//$NON-NLS-1$
1693
		result.add(createBinaryOperation(uml, stdlib.getOrderedSet(),
1694
			EXCLUDING_NAME, stdlib.getT(), "object"));//$NON-NLS-1$
1689
		result.add(createTernaryOperation(uml, stdlib.getOrderedSet(),
1695
		result.add(createTernaryOperation(uml, stdlib.getOrderedSet(),
1690
			SUB_ORDERED_SET_NAME, stdlib.getInteger(), "lower", //$NON-NLS-1$
1696
			SUB_ORDERED_SET_NAME, stdlib.getInteger(), "lower", //$NON-NLS-1$
1691
			stdlib.getInteger(), "upper"));//$NON-NLS-1$
1697
			stdlib.getInteger(), "upper"));//$NON-NLS-1$
(-)src/org/eclipse/ocl/uml/tests/CollectionsTest.java (+19 lines)
Lines 20-25 Link Here
20
import java.util.Arrays;
20
import java.util.Arrays;
21
import java.util.Collection;
21
import java.util.Collection;
22
import java.util.Collections;
22
import java.util.Collections;
23
import java.util.LinkedHashSet;
23
import java.util.List;
24
import java.util.List;
24
import java.util.Set;
25
import java.util.Set;
25
26
Lines 264-269 Link Here
264
                .asList(new Object[] {"a", "b", "c", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
265
                .asList(new Object[] {"a", "b", "c", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
265
266
266
            assertEquals(expected, result);
267
            assertEquals(expected, result);
268
			
269
			// return type is OrderedSet
270
			
271
			expr = helper
272
				.createQuery("OrderedSet{'a', 'b', 'd', 'e'}->including('c')"); //$NON-NLS-1$
273
			
274
			Object objResult = ocl.evaluate("", expr); //$NON-NLS-1$
275
276
			assertTrue(objResult instanceof LinkedHashSet<?>);
267
        } catch (Exception e) {
277
        } catch (Exception e) {
268
            fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
278
            fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
269
        }
279
        }
Lines 317-322 Link Here
317
                .asList(new Object[] {"a", "b", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
327
                .asList(new Object[] {"a", "b", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
318
328
319
            assertEquals(expected, result);
329
            assertEquals(expected, result);
330
			
331
			// return type is OrderedSet
332
			
333
			expr = helper
334
				.createQuery("OrderedSet{'a', 'b', 'd', 'e'}->excluding('c')"); //$NON-NLS-1$
335
336
			Object objResult = ocl.evaluate("", expr); //$NON-NLS-1$
337
			
338
			assertTrue(objResult instanceof LinkedHashSet<?>);
320
        } catch (Exception e) {
339
        } catch (Exception e) {
321
            fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
340
            fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
322
        }
341
        }
(-)org.eclipse.ocl.uml.tests.AllTests.launch (+38 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
3
<booleanAttribute key="append.args" value="true"/>
4
<booleanAttribute key="askclear" value="false"/>
5
<booleanAttribute key="automaticAdd" value="true"/>
6
<booleanAttribute key="automaticValidate" value="false"/>
7
<stringAttribute key="bootstrap" value=""/>
8
<stringAttribute key="checked" value="[NONE]"/>
9
<booleanAttribute key="clearConfig" value="true"/>
10
<booleanAttribute key="clearws" value="true"/>
11
<booleanAttribute key="clearwslog" value="false"/>
12
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
13
<booleanAttribute key="default" value="true"/>
14
<booleanAttribute key="includeOptional" value="true"/>
15
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
16
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
17
<listEntry value="/org.eclipse.ocl.uml.tests/src/org/eclipse/ocl/uml/tests/AllTests.java"/>
18
</listAttribute>
19
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
20
<listEntry value="1"/>
21
</listAttribute>
22
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
23
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
24
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
25
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
26
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ocl.uml.tests.AllTests"/>
27
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
28
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ocl.uml.tests"/>
29
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
30
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms128m -Xmx768m -XX:MaxPermSize=128M"/>
31
<stringAttribute key="pde.version" value="3.3"/>
32
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
33
<booleanAttribute key="show_selected_only" value="false"/>
34
<booleanAttribute key="tracing" value="false"/>
35
<booleanAttribute key="useDefaultConfig" value="true"/>
36
<booleanAttribute key="useDefaultConfigArea" value="false"/>
37
<booleanAttribute key="useProduct" value="true"/>
38
</launchConfiguration>
(-)src/org/eclipse/ocl/ecore/tests/CollectionsTest.java (+19 lines)
Lines 21-26 Link Here
21
21
22
import java.util.Arrays;
22
import java.util.Arrays;
23
import java.util.Collection;
23
import java.util.Collection;
24
import java.util.LinkedHashSet;
24
import java.util.List;
25
import java.util.List;
25
import java.util.Set;
26
import java.util.Set;
26
27
Lines 273-278 Link Here
273
				.asList(new Object[]{"a", "b", "c", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
274
				.asList(new Object[]{"a", "b", "c", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
274
275
275
			assertEquals(expected, result);
276
			assertEquals(expected, result);
277
			
278
			// return type is OrderedSet
279
			
280
			expr = helper
281
				.createQuery("OrderedSet{'a', 'b', 'd', 'e'}->including('c')"); //$NON-NLS-1$
282
			
283
			Object objResult = ocl.evaluate("", expr); //$NON-NLS-1$
284
285
			assertTrue(objResult instanceof LinkedHashSet<?>);
276
		} catch (Exception e) {
286
		} catch (Exception e) {
277
			fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
287
			fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
278
		}
288
		}
Lines 326-331 Link Here
326
				.asList(new Object[]{"a", "b", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
336
				.asList(new Object[]{"a", "b", "d", "e"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
327
337
328
			assertEquals(expected, result);
338
			assertEquals(expected, result);
339
			
340
			// return type is OrderedSet
341
			
342
			expr = helper
343
				.createQuery("OrderedSet{'a', 'b', 'd', 'e'}->excluding('c')"); //$NON-NLS-1$
344
345
			Object objResult = ocl.evaluate("", expr); //$NON-NLS-1$
346
			
347
			assertTrue(objResult instanceof LinkedHashSet<?>);
329
		} catch (Exception e) {
348
		} catch (Exception e) {
330
			fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
349
			fail("Failed to parse or evaluate: " + e.getLocalizedMessage()); //$NON-NLS-1$
331
		}
350
		}
(-)org.eclipse.ocl.ecore.tests.AllTests.launch (+38 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
3
<booleanAttribute key="append.args" value="true"/>
4
<booleanAttribute key="askclear" value="false"/>
5
<booleanAttribute key="automaticAdd" value="true"/>
6
<booleanAttribute key="automaticValidate" value="false"/>
7
<stringAttribute key="bootstrap" value=""/>
8
<stringAttribute key="checked" value="[NONE]"/>
9
<booleanAttribute key="clearConfig" value="true"/>
10
<booleanAttribute key="clearws" value="true"/>
11
<booleanAttribute key="clearwslog" value="false"/>
12
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
13
<booleanAttribute key="default" value="true"/>
14
<booleanAttribute key="includeOptional" value="true"/>
15
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
16
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
17
<listEntry value="/org.eclipse.ocl.ecore.tests/src/org/eclipse/ocl/ecore/tests/AllTests.java"/>
18
</listAttribute>
19
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
20
<listEntry value="1"/>
21
</listAttribute>
22
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
23
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
24
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
25
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
26
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ocl.ecore.tests.AllTests"/>
27
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
28
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ocl.ecore.tests"/>
29
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
30
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms128m -Xmx768m -XX:MaxPermSize=128M"/>
31
<stringAttribute key="pde.version" value="3.3"/>
32
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
33
<booleanAttribute key="show_selected_only" value="false"/>
34
<booleanAttribute key="tracing" value="false"/>
35
<booleanAttribute key="useDefaultConfig" value="true"/>
36
<booleanAttribute key="useDefaultConfigArea" value="false"/>
37
<booleanAttribute key="useProduct" value="true"/>
38
</launchConfiguration>
(-)model/oclstdlib.ecore (-2 / +2 lines)
Lines 714-723 Link Here
714
      <eOperations name="intersection" eType="#/0/Set(T)">
714
      <eOperations name="intersection" eType="#/0/Set(T)">
715
        <eParameters name="set" eType="#/0/Set(T)"/>
715
        <eParameters name="set" eType="#/0/Set(T)"/>
716
      </eOperations>
716
      </eOperations>
717
      <eOperations name="including" eType="#/0/Set(T)">
717
      <eOperations name="including" eType="#/0/OrderedSet(T)">
718
        <eParameters name="object" eType="#/0/T"/>
718
        <eParameters name="object" eType="#/0/T"/>
719
      </eOperations>
719
      </eOperations>
720
      <eOperations name="excluding" eType="#/0/Set(T)">
720
      <eOperations name="excluding" eType="#/0/OrderedSet(T)">
721
        <eParameters name="object" eType="#/0/T"/>
721
        <eParameters name="object" eType="#/0/T"/>
722
      </eOperations>
722
      </eOperations>
723
      <eOperations name="symmetricDifference" eType="#/0/Set(T)">
723
      <eOperations name="symmetricDifference" eType="#/0/Set(T)">

Return to bug 246962