Skip to content

Package: FakeViewContext

FakeViewContext

nameinstructionbranchcomplexitylinemethod
FakeViewContext(EObject, VElement)
M: 0 C: 24
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
addChildContext(VElement, FakeViewContext)
M: 0 C: 25
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
changeDomainModel(EObject)
M: 2 C: 27
93%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 1 C: 8
89%
M: 0 C: 1
100%
dispose()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
dispose(boolean)
M: 0 C: 15
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
getDomainModel()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getService(Class)
M: 0 C: 2
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getViewModel()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
initialize()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
registerDomainChangeListener(ModelChangeListener)
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
registerEMFFormsContextListener(EMFFormsContextListener)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
registerRootDomainModelChangeListener(RootDomainModelChangeListener)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
registerViewChangeListener(ModelChangeListener)
M: 0 C: 29
100%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 0 C: 7
100%
M: 0 C: 1
100%
removeChildContext(FakeViewContext)
M: 0 C: 18
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
removeChildContext(FakeViewContext, boolean)
M: 0 C: 19
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
unregisterDomainChangeListener(ModelChangeListener)
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
unregisterEMFFormsContextListener(EMFFormsContextListener)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
unregisterRootDomainModelChangeListener(RootDomainModelChangeListener)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
unregisterViewChangeListener(ModelChangeListener)
M: 0 C: 29
100%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 0 C: 7
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2019 EclipseSource Muenchen GmbH and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * eugen - initial API and implementation
13: * Christian W. Damus - bug 527686
14: ******************************************************************************/
15: package org.eclipse.emfforms.internal.core.services.scoped;
16:
17: import static java.util.Collections.singleton;
18:
19: import java.util.Iterator;
20: import java.util.LinkedHashSet;
21: import java.util.Set;
22:
23: import org.eclipse.emf.ecore.EObject;
24: import org.eclipse.emf.ecore.util.EcoreUtil;
25: import org.eclipse.emf.ecp.view.spi.model.ModelChangeAddRemoveListener;
26: import org.eclipse.emf.ecp.view.spi.model.ModelChangeListener;
27: import org.eclipse.emf.ecp.view.spi.model.VElement;
28: import org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener;
29: import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext;
30: import org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener;
31:
32: class FakeViewContext implements EMFFormsViewContext {
33:
34:         private EObject domainObject;
35:         private final VElement viewModel;
36:         private final Set<EMFFormsContextListener> listeners = new LinkedHashSet<>();
37:         private final Set<RootDomainModelChangeListener> rootListeners = new LinkedHashSet<>();
38:         private final Set<ModelChangeListener> viewListeners = new LinkedHashSet<>();
39:
40:         private VElement parentElement;
41:         private FakeViewContext parent;
42:
43:         private boolean disposing;
44:
45:         FakeViewContext(EObject domainObject, VElement viewModel) {
46:                 this.domainObject = domainObject;
47:                 this.viewModel = viewModel;
48:         }
49:
50:         @Override
51:         public void unregisterRootDomainModelChangeListener(
52:                 RootDomainModelChangeListener rootDomainModelChangeListener) {
53:
54:                 rootListeners.remove(rootDomainModelChangeListener);
55:         }
56:
57:         @Override
58:         public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
59:                 listeners.remove(contextListener);
60:         }
61:
62:         @Override
63:         public void unregisterDomainChangeListener(ModelChangeListener modelChangeListener) {
64:
65:         }
66:
67:         @Override
68:         public void registerViewChangeListener(ModelChangeListener modelChangeListener) {
69:                 viewListeners.add(modelChangeListener);
70:
71:•                if (!disposing) {
72:•                        if (modelChangeListener instanceof ModelChangeAddRemoveListener) {
73:                                 final ModelChangeAddRemoveListener addRemove = (ModelChangeAddRemoveListener) modelChangeListener;
74:•                                for (final Iterator<EObject> iter = EcoreUtil.getAllContents(singleton(viewModel)); iter.hasNext();) {
75:                                         addRemove.notifyAdd(iter.next());
76:                                 }
77:                         }
78:                 }
79:         }
80:
81:         @Override
82:         public void unregisterViewChangeListener(ModelChangeListener modelChangeListener) {
83:                 viewListeners.remove(modelChangeListener);
84:
85:•                if (!disposing) {
86:•                        if (modelChangeListener instanceof ModelChangeAddRemoveListener) {
87:                                 final ModelChangeAddRemoveListener addRemove = (ModelChangeAddRemoveListener) modelChangeListener;
88:•                                for (final Iterator<EObject> iter = EcoreUtil.getAllContents(singleton(viewModel)); iter.hasNext();) {
89:                                         addRemove.notifyRemove(iter.next());
90:                                 }
91:                         }
92:                 }
93:         }
94:
95:         @Override
96:         public void registerRootDomainModelChangeListener(
97:                 RootDomainModelChangeListener rootDomainModelChangeListener) {
98:
99:                 rootListeners.add(rootDomainModelChangeListener);
100:         }
101:
102:         @Override
103:         public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
104:                 listeners.add(contextListener);
105:         }
106:
107:         @Override
108:         public void registerDomainChangeListener(ModelChangeListener modelChangeListener) {
109:
110:         }
111:
112:         @Override
113:         public VElement getViewModel() {
114:                 return viewModel;
115:         }
116:
117:         @Override
118:         public <T> T getService(Class<T> serviceType) {
119:                 return null;
120:         }
121:
122:         @Override
123:         public EObject getDomainModel() {
124:                 return domainObject;
125:         }
126:
127:         @Override
128:         public void changeDomainModel(EObject newDomainModel) {
129:•                if (parent != null) {
130:                         parent.removeChildContext(this, false);
131:                 } else {
132:                         dispose();
133:                 }
134:
135:                 domainObject = newDomainModel;
136:
137:                 parent.addChildContext(parentElement, this);
138:
139:                 listeners.forEach(EMFFormsContextListener::contextInitialised);
140:
141:                 rootListeners.forEach(RootDomainModelChangeListener::notifyChange);
142:         }
143:
144:         public void initialize() {
145:                 listeners.forEach(EMFFormsContextListener::contextInitialised);
146:         }
147:
148:         public void dispose() {
149:                 dispose(true);
150:         }
151:
152:         void dispose(boolean permanently) {
153:                 final boolean oldDisposing = disposing;
154:                 disposing = permanently;
155:                 try {
156:                         listeners.forEach(EMFFormsContextListener::contextDispose);
157:                 } finally {
158:                         disposing = oldDisposing;
159:                 }
160:         }
161:
162:         public void addChildContext(VElement vElement, FakeViewContext childContext) {
163:                 childContext.parent = this;
164:                 childContext.parentElement = vElement;
165:
166:•                for (final EMFFormsContextListener listener : listeners) {
167:                         listener.childContextAdded(vElement, childContext);
168:                         listener.contextInitialised();
169:                 }
170:         }
171:
172:         public void removeChildContext(FakeViewContext childContext) {
173:                 childContext.dispose();
174:
175:•                for (final EMFFormsContextListener listener : listeners) {
176:                         listener.childContextDisposed(childContext);
177:                 }
178:         }
179:
180:         void removeChildContext(FakeViewContext childContext, boolean permanently) {
181:                 childContext.dispose(permanently);
182:
183:•                for (final EMFFormsContextListener listener : listeners) {
184:                         listener.childContextDisposed(childContext);
185:                 }
186:         }
187:
188: }