View | Details | Raw Unified | Return to bug 155258 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/gmf/internal/codegen/GMFGenConfig.java (+13 lines)
Lines 16-21 Link Here
16
import org.eclipse.emf.ecore.EObject;
16
import org.eclipse.emf.ecore.EObject;
17
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
17
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
18
import org.eclipse.gmf.codegen.gmfgen.GenChildContainer;
18
import org.eclipse.gmf.codegen.gmfgen.GenChildContainer;
19
//[155332]import org.eclipse.gmf.codegen.gmfgen.GenCommonBase;
19
import org.eclipse.gmf.codegen.gmfgen.GenNode;
20
import org.eclipse.gmf.codegen.gmfgen.GenNode;
20
import org.eclipse.gmf.internal.common.reconcile.Copier;
21
import org.eclipse.gmf.internal.common.reconcile.Copier;
21
import org.eclipse.gmf.internal.common.reconcile.DecisionMaker;
22
import org.eclipse.gmf.internal.common.reconcile.DecisionMaker;
Lines 73-82 Link Here
73
		setMatcher(GMFGEN.getGenTopLevelNode(), getGenNodeMatcher());
74
		setMatcher(GMFGEN.getGenTopLevelNode(), getGenNodeMatcher());
74
		preserveIfNotByPattern(GMFGEN.getGenTopLevelNode(), GMFGEN.getGenChildContainer_CanonicalEditPolicyClassName(), ".*" + GenChildContainer.CANONICAL_EDIT_POLICY_SUFFIX);
75
		preserveIfNotByPattern(GMFGEN.getGenTopLevelNode(), GMFGEN.getGenChildContainer_CanonicalEditPolicyClassName(), ".*" + GenChildContainer.CANONICAL_EDIT_POLICY_SUFFIX);
75
		preserveIfNotByPattern(GMFGEN.getGenTopLevelNode(), GMFGEN.getGenNode_GraphicalNodeEditPolicyClassName(), ".*" + GenNode.GRAPHICAL_NODE_EDIT_POLICY_SUFFIX);
76
		preserveIfNotByPattern(GMFGEN.getGenTopLevelNode(), GMFGEN.getGenNode_GraphicalNodeEditPolicyClassName(), ".*" + GenNode.GRAPHICAL_NODE_EDIT_POLICY_SUFFIX);
77
		//[155332]preserveIfNotByPattern(GMFGEN.getGenTopLevelNode(), GMFGEN.getGenCommonBase_EditPartClassName(), ".*" + GenCommonBase.EDIT_PART_SUFFIX);
76
		
78
		
77
		setMatcher(GMFGEN.getGenChildNode(), getGenNodeMatcher());
79
		setMatcher(GMFGEN.getGenChildNode(), getGenNodeMatcher());
78
		preserveIfNotByPattern(GMFGEN.getGenChildNode(), GMFGEN.getGenChildContainer_CanonicalEditPolicyClassName(), ".*" + GenChildContainer.CANONICAL_EDIT_POLICY_SUFFIX);
80
		preserveIfNotByPattern(GMFGEN.getGenChildNode(), GMFGEN.getGenChildContainer_CanonicalEditPolicyClassName(), ".*" + GenChildContainer.CANONICAL_EDIT_POLICY_SUFFIX);
79
		preserveIfNotByPattern(GMFGEN.getGenChildNode(), GMFGEN.getGenNode_GraphicalNodeEditPolicyClassName(), ".*" + GenNode.GRAPHICAL_NODE_EDIT_POLICY_SUFFIX);
81
		preserveIfNotByPattern(GMFGEN.getGenChildNode(), GMFGEN.getGenNode_GraphicalNodeEditPolicyClassName(), ".*" + GenNode.GRAPHICAL_NODE_EDIT_POLICY_SUFFIX);
82
		//[155332]preserveIfNotByPattern(GMFGEN.getGenChildNode(), GMFGEN.getGenCommonBase_EditPartClassName(), ".*" + GenCommonBase.EDIT_PART_SUFFIX);
80
		
83
		
81
		//for now nothing to reconcile here
84
		//for now nothing to reconcile here
82
		//we need to match this only to dig into the attributes 
85
		//we need to match this only to dig into the attributes 
Lines 88-93 Link Here
88
		preserveIfSet(GMFGEN.getGenCompartment(), GMFGEN.getGenCompartment_CanCollapse());
91
		preserveIfSet(GMFGEN.getGenCompartment(), GMFGEN.getGenCompartment_CanCollapse());
89
		preserveIfSet(GMFGEN.getGenCompartment(), GMFGEN.getGenCompartment_HideIfEmpty());
92
		preserveIfSet(GMFGEN.getGenCompartment(), GMFGEN.getGenCompartment_HideIfEmpty());
90
		preserveIfSet(GMFGEN.getGenCompartment(), GMFGEN.getGenCompartment_NeedsTitle());
93
		preserveIfSet(GMFGEN.getGenCompartment(), GMFGEN.getGenCompartment_NeedsTitle());
94
		//[155332]preserveIfNotByPattern(GMFGEN.getGenCompartment(), GMFGEN.getGenCommonBase_EditPartClassName(), ".*" + GenCommonBase.EDIT_PART_SUFFIX);
91
		
95
		
92
		//if parent node is matched, then viemap is matched automatically because it is [1] feature.
96
		//if parent node is matched, then viemap is matched automatically because it is [1] feature.
93
		//there are nothing to reconcile for viewmaps, all their properties are derived
97
		//there are nothing to reconcile for viewmaps, all their properties are derived
Lines 108-113 Link Here
108
		addDecisionMaker(GMFGEN.getGenLinkLabel(), new DecisionMaker.ALWAYS_OLD(GMFGEN.getGenCommonBase_CustomBehaviour()));
112
		addDecisionMaker(GMFGEN.getGenLinkLabel(), new DecisionMaker.ALWAYS_OLD(GMFGEN.getGenCommonBase_CustomBehaviour()));
109
		addDecisionMaker(GMFGEN.getGenNodeLabel(), new DecisionMaker.ALWAYS_OLD(GMFGEN.getGenCommonBase_CustomBehaviour()));
113
		addDecisionMaker(GMFGEN.getGenNodeLabel(), new DecisionMaker.ALWAYS_OLD(GMFGEN.getGenCommonBase_CustomBehaviour()));
110
		addDecisionMaker(GMFGEN.getGenExternalNodeLabel(), new DecisionMaker.ALWAYS_OLD(GMFGEN.getGenCommonBase_CustomBehaviour()));
114
		addDecisionMaker(GMFGEN.getGenExternalNodeLabel(), new DecisionMaker.ALWAYS_OLD(GMFGEN.getGenCommonBase_CustomBehaviour()));
115
		
116
		setMatcher(GMFGEN.getMetamodelType(), ALWAYS_MATCH);
117
		preserveIfSet(GMFGEN.getMetamodelType(), GMFGEN.getElementType_DisplayName());
118
		preserveIfSet(GMFGEN.getMetamodelType(), GMFGEN.getElementType_DefinedExternally());
119
120
		setMatcher(GMFGEN.getSpecializationType(), ALWAYS_MATCH);
121
		preserveIfSet(GMFGEN.getSpecializationType(), GMFGEN.getElementType_DisplayName());
122
		preserveIfSet(GMFGEN.getSpecializationType(), GMFGEN.getElementType_DefinedExternally());
123
	
111
	}
124
	}
112
125
113
	private Matcher getGenNodeMatcher(){
126
	private Matcher getGenNodeMatcher(){
(-)src/org/eclipse/gmf/codegen/gmfgen/impl/ElementTypeImpl.java (-1 / +1 lines)
Lines 200-206 Link Here
200
	}
200
	}
201
201
202
	public String getDisplayName() {
202
	public String getDisplayName() {
203
		if (GenCommonBaseImpl.isEmpty(getDisplayNameGen())) {
203
		if (!GenCommonBaseImpl.isEmpty(getDisplayNameGen())) {
204
			return getDisplayNameGen();
204
			return getDisplayNameGen();
205
		}
205
		}
206
		// Let element type label be the name of the corresponding creation tool.
206
		// Let element type label be the name of the corresponding creation tool.
(-)src/org/eclipse/gmf/tests/gen/CodegenReconcileTest.java (-6 / +96 lines)
Lines 13-19 Link Here
13
13
14
import java.util.ArrayList;
14
import java.util.ArrayList;
15
import java.util.Arrays;
15
import java.util.Arrays;
16
import java.util.Collection;
16
import java.util.Iterator;
17
import java.util.Iterator;
18
import java.util.LinkedList;
17
import java.util.List;
19
import java.util.List;
18
20
19
import junit.framework.Assert;
21
import junit.framework.Assert;
Lines 27-34 Link Here
27
import org.eclipse.emf.ecore.util.EcoreUtil;
29
import org.eclipse.emf.ecore.util.EcoreUtil;
28
import org.eclipse.gmf.codegen.gmfgen.Attributes;
30
import org.eclipse.gmf.codegen.gmfgen.Attributes;
29
import org.eclipse.gmf.codegen.gmfgen.DefaultSizeAttributes;
31
import org.eclipse.gmf.codegen.gmfgen.DefaultSizeAttributes;
32
import org.eclipse.gmf.codegen.gmfgen.ElementType;
30
import org.eclipse.gmf.codegen.gmfgen.GMFGenFactory;
33
import org.eclipse.gmf.codegen.gmfgen.GMFGenFactory;
31
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
34
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
35
import org.eclipse.gmf.codegen.gmfgen.GenCommonBase;
32
import org.eclipse.gmf.codegen.gmfgen.GenCompartment;
36
import org.eclipse.gmf.codegen.gmfgen.GenCompartment;
33
import org.eclipse.gmf.codegen.gmfgen.GenDiagram;
37
import org.eclipse.gmf.codegen.gmfgen.GenDiagram;
34
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator;
38
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator;
Lines 248-254 Link Here
248
				super(attribute, valueToSet);
252
				super(attribute, valueToSet);
249
			}
253
			}
250
254
251
			protected EObject findChangeSubjet(GenEditorGenerator root) {
255
			protected EObject findChangeSubject(GenEditorGenerator root) {
252
				return root.getDiagram();
256
				return root.getDiagram();
253
			}
257
			}
254
		}
258
		}
Lines 373-379 Link Here
373
				super(attribute, expectedValue);
377
				super(attribute, expectedValue);
374
			}
378
			}
375
379
376
			protected final EObject findChangeSubjet(GenEditorGenerator root) {
380
			protected final EObject findChangeSubject(GenEditorGenerator root) {
377
				return root;
381
				return root;
378
			}
382
			}
379
		}
383
		}
Lines 419-425 Link Here
419
				super(attribute, valueToSet);
423
				super(attribute, valueToSet);
420
			}
424
			}
421
425
422
			protected EObject findChangeSubjet(GenEditorGenerator root) {
426
			protected EObject findChangeSubject(GenEditorGenerator root) {
423
				return root.getEditor();
427
				return root.getEditor();
424
			}
428
			}
425
		}
429
		}
Lines 511-516 Link Here
511
		checkUserChange(new DefaultSizeChange());
515
		checkUserChange(new DefaultSizeChange());
512
	}
516
	}
513
	
517
	
518
	public void testReconcileMetamodelType(){
519
		abstract class ElementTypeChange implements UserChange {
520
			protected abstract void applyChange(ElementType elementType);
521
			protected abstract void assertChange(ElementType elementType);
522
			
523
			protected Collection collectSubjects(GenEditorGenerator editorGenerator){
524
				LinkedList allWithType = new LinkedList();
525
				GenDiagram diagram = editorGenerator.getDiagram();
526
				allWithType.add(diagram);
527
				allWithType.addAll(diagram.getAllChildContainers());
528
				//XXX: we do not know how to match links yet 
529
				//allWithType.addAll(diagram.getLinks());
530
				return allWithType;
531
			}
532
			
533
			public final void applyChanges(GenEditorGenerator old) {
534
				for (Iterator all = collectSubjects(old).iterator(); all.hasNext();){
535
					GenCommonBase next = (GenCommonBase)all.next();
536
					ElementType nextElementType = next.getElementType();
537
					if (nextElementType == null){
538
						continue;
539
					}
540
					applyChange(nextElementType);
541
				}
542
			}
543
			
544
			public final void assertChangesPreserved(GenEditorGenerator current) {
545
				for (Iterator all = collectSubjects(current).iterator(); all.hasNext();){
546
					GenCommonBase next = (GenCommonBase)all.next();
547
					ElementType nextElementType = next.getElementType();
548
					if (nextElementType == null){
549
						continue;
550
					}
551
					assertChange(nextElementType);
552
				}
553
			}
554
			
555
			public final ReconcilerConfigBase getReconcilerConfig() {
556
				return new GMFGenConfig();
557
			}
558
559
			protected String toString(ElementType elementType) {
560
				return String.valueOf(elementType)/* + " for :" + String.valueOf(elementType.getDiagramElement())*/;
561
			}
562
		
563
		}
564
		
565
		class DisplayNameChange extends ElementTypeChange {
566
			private final String myValue;
567
568
			public DisplayNameChange(String value){
569
				myValue = value;
570
			}
571
			
572
			protected void applyChange(ElementType elementType) {
573
				elementType.setDisplayName(myValue);
574
			}
575
			
576
			protected void assertChange(ElementType elementType) {
577
				assertEquals(toString(elementType), myValue, elementType.getDisplayName());
578
			}
579
		}
580
		
581
		class DefinedExternallyChange extends ElementTypeChange {
582
			private boolean myValue;
583
			
584
			public DefinedExternallyChange(boolean value){
585
				myValue = value;
586
			}
587
			
588
			protected void applyChange(ElementType elementType) {
589
				elementType.setDefinedExternally(myValue);
590
			}
591
			
592
			protected void assertChange(ElementType elementType) {
593
				assertEquals(toString(elementType), myValue, elementType.isDefinedExternally());
594
			}
595
596
		}
597
		
598
		checkUserChange(new DisplayNameChange("ABCD"));
599
		//XXX: does not work: checkUserChange(new DisplayNameChange(""));
600
		checkUserChange(new DefinedExternallyChange(true));
601
		checkUserChange(new DefinedExternallyChange(false));
602
	}
603
	
514
	private void checkUserChange(UserChange userChange){
604
	private void checkUserChange(UserChange userChange){
515
		GenEditorGenerator old = createCopy();
605
		GenEditorGenerator old = createCopy();
516
		GenEditorGenerator current = createCopy();
606
		GenEditorGenerator current = createCopy();
Lines 563-579 Link Here
563
			myValueToSet = valueToSet;
653
			myValueToSet = valueToSet;
564
		}
654
		}
565
		
655
		
566
		protected abstract EObject findChangeSubjet(GenEditorGenerator root);
656
		protected abstract EObject findChangeSubject(GenEditorGenerator root);
567
		
657
		
568
		public void applyChanges(GenEditorGenerator old) {
658
		public void applyChanges(GenEditorGenerator old) {
569
			EObject subject = findChangeSubjet(old);
659
			EObject subject = findChangeSubject(old);
570
			assertNotNull(subject);
660
			assertNotNull(subject);
571
			subject.eSet(myAttribute, myValueToSet);
661
			subject.eSet(myAttribute, myValueToSet);
572
			myExpectedValue = subject.eGet(myAttribute);
662
			myExpectedValue = subject.eGet(myAttribute);
573
		}
663
		}
574
		
664
		
575
		public void assertChangesPreserved(GenEditorGenerator current) {
665
		public void assertChangesPreserved(GenEditorGenerator current) {
576
			EObject subject = findChangeSubjet(current);
666
			EObject subject = findChangeSubject(current);
577
			assertNotNull(subject);
667
			assertNotNull(subject);
578
			assertEquals(myExpectedValue, subject.eGet(myAttribute));
668
			assertEquals(myExpectedValue, subject.eGet(myAttribute));
579
		}
669
		}

Return to bug 155258