Skip to content

Package: ValidationServiceProvider

ValidationServiceProvider

nameinstructionbranchcomplexitylinemethod
ValidationServiceProvider()
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
deleteValidationService(Object)
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%
getAllChildEObjects(ECPProject)
M: 6 C: 36
86%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 1 C: 8
89%
M: 0 C: 1
100%
getValidationService(Object)
M: 0 C: 40
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 8
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2012 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: ******************************************************************************/
13: package org.eclipse.emf.ecp.internal.validation;
14:
15: import java.util.ArrayList;
16: import java.util.Collection;
17: import java.util.HashMap;
18: import java.util.List;
19: import java.util.Map;
20:
21: import org.eclipse.emf.common.util.TreeIterator;
22: import org.eclipse.emf.ecore.EObject;
23: import org.eclipse.emf.ecore.util.EcoreUtil;
24: import org.eclipse.emf.ecp.common.spi.cachetree.IExcludedObjectsCallback;
25: import org.eclipse.emf.ecp.core.ECPProject;
26: import org.eclipse.emf.ecp.spi.core.InternalProject;
27: import org.eclipse.emf.ecp.validation.api.IValidationService;
28: import org.eclipse.emf.ecp.validation.api.IValidationServiceProvider;
29:
30: /**
31: * Validation service provider.
32: *
33: * @author emueller
34: * @author Tobias Verhoeven
35: */
36: public class ValidationServiceProvider implements IValidationServiceProvider {
37:
38:         private final Map<Object, IValidationService> mapping;
39:
40:         /**
41:          * Constructor.
42:          */
43:         public ValidationServiceProvider() {
44:                 mapping = new HashMap<Object, IValidationService>();
45:         }
46:
47:         /**
48:          * {@inheritDoc}
49:          */
50:         @Override
51:         public IValidationService getValidationService(final Object validationServiceObject) {
52:•                if (!mapping.containsKey(validationServiceObject)) {
53:                         final IValidationService validationService = new ValidationService(new IExcludedObjectsCallback() {
54:
55:                                 @Override
56:                                 public boolean isExcluded(Object object) {
57:                                         if (InternalProject.class.isInstance(validationServiceObject)) {
58:                                                 return ((InternalProject) validationServiceObject).isModelRoot(object);
59:                                         }
60:                                         return false;
61:                                 }
62:                         });
63:                         mapping.put(validationServiceObject, validationService);
64:•                        if (validationServiceObject instanceof ECPProject) {
65:                                 final ECPProject project = (ECPProject) validationServiceObject;
66:                                 validationService.validate(getAllChildEObjects(project));
67:                         }
68:                         return validationService;
69:                 }
70:
71:                 return mapping.get(validationServiceObject);
72:         }
73:
74:         private Collection<EObject> getAllChildEObjects(ECPProject project) {
75:                 final List<EObject> result = new ArrayList<EObject>();
76:
77:•                for (final Object object : project.getContents()) {
78:•                        if (EObject.class.isInstance(object)) {
79:                                 final EObject eObject = (EObject) object;
80:                                 result.add(eObject);
81:                                 final TreeIterator<EObject> iterator = EcoreUtil.getAllContents(eObject, false);
82:
83:•                                while (iterator.hasNext()) {
84:                                         result.add(iterator.next());
85:                                 }
86:                         }
87:                 }
88:                 return result;
89:         }
90:
91:         /**
92:          * {@inheritDoc}
93:          */
94:         @Override
95:         public void deleteValidationService(Object key) {
96:                 mapping.remove(key);
97:         }
98: }