Skip to content

Package: ArrayOnceViewModelServiceProvider

ArrayOnceViewModelServiceProvider

nameinstructionbranchcomplexitylinemethod
ArrayOnceViewModelServiceProvider(ViewModelService[])
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getViewModelServices(VElement, EObject)
M: 0 C: 11
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2017 Christian W. Damus 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: * Christian W. Damus - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.internal.context;
15:
16: import java.util.Arrays;
17: import java.util.Collection;
18: import java.util.Collections;
19: import java.util.List;
20:
21: import org.eclipse.emf.ecore.EObject;
22: import org.eclipse.emf.ecp.view.spi.context.ViewModelService;
23: import org.eclipse.emf.ecp.view.spi.context.ViewModelServiceProvider;
24: import org.eclipse.emf.ecp.view.spi.model.VElement;
25:
26: /**
27: * A {@link ViewModelServiceProvider} for compatibility with the injection of
28: * static arrays of services, that provides them exactly once and thereafter
29: * provides no services at all.
30: *
31: * @author Christian W. Damus
32: *
33: * @since 1.16
34: */
35: public class ArrayOnceViewModelServiceProvider implements ViewModelServiceProvider {
36:
37:         private List<ViewModelService> services;
38:
39:         /**
40:          * Initializes me with the services to provide once and once only.
41:          *
42:          * @param services the one-shot services to provide
43:          */
44:         public ArrayOnceViewModelServiceProvider(ViewModelService... services) {
45:                 super();
46:
47:                 this.services = Arrays.asList(services);
48:         }
49:
50:         @Override
51:         public Collection<? extends ViewModelService> getViewModelServices(VElement view, EObject eObject) {
52:                 final Collection<? extends ViewModelService> result = services;
53:•                if (!result.isEmpty()) {
54:                         // Only this once
55:                         services = Collections.emptyList();
56:                 }
57:                 return result;
58:         }
59:
60: }