Skip to content

Package: EMFSpecificServiceImpl

EMFSpecificServiceImpl

nameinstructionbranchcomplexitylinemethod
EMFSpecificServiceImpl()
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%
getAdapterFactoryItemDelegator(AdapterFactory)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getIItemPropertyDescriptor(EObject, EStructuralFeature)
M: 0 C: 48
100%
M: 1 C: 3
75%
M: 1 C: 2
67%
M: 0 C: 11
100%
M: 0 C: 1
100%
getIItemPropertySource(EObject)
M: 49 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2015 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: * Lucas Koehler - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.core.services.emfspecificservice;
15:
16: import org.eclipse.emf.common.notify.AdapterFactory;
17: import org.eclipse.emf.ecore.EObject;
18: import org.eclipse.emf.ecore.EStructuralFeature;
19: import org.eclipse.emf.ecp.view.model.common.edit.provider.CustomReflectiveItemProviderAdapterFactory;
20: import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
21: import org.eclipse.emf.edit.domain.EditingDomain;
22: import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
23: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
24: import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
25: import org.eclipse.emf.edit.provider.IItemPropertySource;
26: import org.eclipse.emfforms.spi.core.services.emfspecificservice.EMFSpecificService;
27:
28: /**
29: * Implementation of {@link EMFSpecificService}.
30: *
31: * @author Lucas Koehler
32: * @noextend This interface is not intended to be extended by clients.
33: * @noreference This method is not intended to be referenced by clients.
34: */
35: public class EMFSpecificServiceImpl implements EMFSpecificService {
36:
37:         // private ComposedAdapterFactory composedAdapterFactory; // TODO: discuss: need dispose?
38:         //
39:         // /**
40:         // * {@inheritDoc}
41:         // *
42:         // * @see
43:         // org.eclipse.emfforms.spi.core.services.emfspecificservice.EMFSpecificService#getComposedAdapterFactory()
44:         // */
45:         // @Override
46:         // public ComposedAdapterFactory getComposedAdapterFactory() {
47:         // if (composedAdapterFactory == null) {
48:         // composedAdapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
49:         // new ReflectiveItemProviderAdapterFactory(),
50:         // new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE) });
51:         // }
52:         // return composedAdapterFactory;
53:         // }
54:         //
55:         // /**
56:         // * {@inheritDoc}
57:         // *
58:         // * @see
59:         // org.eclipse.emfforms.spi.core.services.emfspecificservice.EMFSpecificService#getAdapterFactoryItemDelegator()
60:         // */
61:         // @Override
62:         // public AdapterFactoryItemDelegator getAdapterFactoryItemDelegator() {
63:         // return new AdapterFactoryItemDelegator(getComposedAdapterFactory());
64:         // }
65:
66:         @Override
67:         public IItemPropertyDescriptor getIItemPropertyDescriptor(EObject eObject, EStructuralFeature eStructuralFeature) {
68:                 final EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(eObject);
69:                 AdapterFactoryItemDelegator itemDelegator;
70:•                if (editingDomain != null && AdapterFactoryEditingDomain.class.isInstance(editingDomain)) {
71:                         itemDelegator = getAdapterFactoryItemDelegator(AdapterFactoryEditingDomain.class.cast(editingDomain)
72:                                 .getAdapterFactory());
73:                 } else {
74:                         final ComposedAdapterFactory composedAdapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
75:                                 new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE),
76:                                 new CustomReflectiveItemProviderAdapterFactory()
77:                         });
78:                         itemDelegator = getAdapterFactoryItemDelegator(composedAdapterFactory);
79:                         composedAdapterFactory.dispose();
80:                 }
81:
82:                 return itemDelegator.getPropertyDescriptor(eObject, eStructuralFeature);
83:         }
84:
85:         private AdapterFactoryItemDelegator getAdapterFactoryItemDelegator(AdapterFactory adapterFactory) {
86:                 return new AdapterFactoryItemDelegator(adapterFactory);
87:         }
88:
89:         @Override
90:         public IItemPropertySource getIItemPropertySource(EObject eObject) {
91:                 final EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(eObject);
92:                 IItemPropertySource propertySource;
93:•                if (editingDomain != null && AdapterFactoryEditingDomain.class.isInstance(editingDomain)) {
94:                         propertySource = (IItemPropertySource) AdapterFactoryEditingDomain.class.cast(editingDomain)
95:                                 .getAdapterFactory().adapt(eObject, IItemPropertySource.class);
96:                 } else {
97:                         final ComposedAdapterFactory composedAdapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
98:                                 new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE),
99:                                 new CustomReflectiveItemProviderAdapterFactory()
100:                         });
101:                         propertySource = (IItemPropertySource) composedAdapterFactory.adapt(eObject, IItemPropertySource.class);
102:                         composedAdapterFactory.dispose();
103:                 }
104:
105:                 return propertySource;
106:         }
107: }