Skip to content
Snippets Groups Projects
Commit eba0b4c9 authored by Andreas Bayha's avatar Andreas Bayha
Browse files

Variability: DependingElementProvider is more generic


The DependingElementProvider service was improved to support more
generic depending element providers.

Issue-ref: 4281
Issue-URL: af3#4281

Signed-off-by: default avatarAndreas Bayha <bayha@fortiss.org>
parent 0083d70b
No related branches found
No related tags found
1 merge request!1924281
Pipeline #37185 passed
Pipeline: maven-releng

#37186

    DependingElementProviderService.java 5c4547e63b0f2ff547e0c3a7253105466e0b94c1 GREEN
    IDependingElementProvider.java bd4b7ff7c0a25368fc86d7fb26ecaa8a5234c76b GREEN
    IDependingElementProviderService.java 9b59f524a513caf9f5a2b6d16d3523a643b7cc9e GREEN
    DependingElementProviderService.java a041f3b5ff00984304ea94e9333555192c990053 YELLOW
    IDependingElementProvider.java 11b174e8a48f2152a0cc6066335e471cf288893c YELLOW
    IDependingElementProviderService.java 5bbff0a28f64b01331a6a5424cdb2104c000b57d YELLOW
    ......@@ -29,7 +29,7 @@ import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase;
    * @author bayha
    */
    public class DependingElementProviderService
    extends EObjectAwareServiceBase<IDependingElementProvider<? extends EObject>>
    extends EObjectAwareServiceBase<IDependingElementProvider<EObject>>
    implements IDependingElementProviderService {
    /** Singleton instance. */
    ......@@ -41,11 +41,11 @@ public class DependingElementProviderService
    public List<EObject> getDependingElements(EObject obj) {
    List<EObject> res = new ArrayList<EObject>();
    List<IDependingElementProvider<? extends EObject>> registeredHandlers =
    List<IDependingElementProvider<EObject>> registeredHandlers =
    getRegisteredHandlers(obj.getClass());
    if(registeredHandlers != null) {
    for(IDependingElementProvider<?> p : registeredHandlers) {
    for(IDependingElementProvider<EObject> p : registeredHandlers) {
    res.addAll(p.getDependingElements(obj));
    }
    }
    ......@@ -100,9 +100,10 @@ public class DependingElementProviderService
    }
    /** {@inheritDoc} */
    @SuppressWarnings("unchecked")
    @Override
    public void registerDependingElementProvider(
    IDependingElementProvider<? extends EObject> provider, Class<? extends EObject> cls) {
    addHandler(cls, provider);
    addHandler(cls, (IDependingElementProvider<EObject>)provider);
    }
    }
    ......@@ -21,19 +21,22 @@ import org.eclipse.emf.ecore.EObject;
    import org.fortiss.tooling.kernel.service.base.IEObjectAware;
    /**
    * Interface for DependingElementProviders that can be registered in the {@link IDependingElementProviderService}.
    * Interface for DependingElementProviders that can be registered in the
    * {@link IDependingElementProviderService}.
    *
    * @author bayha
    *
    * @param <T> The subclass of {@link EObject} for which this provider shall be invoked.
    * @param <T>
    * The subclass of {@link EObject} for which this provider shall be invoked.
    */
    public interface IDependingElementProvider<T extends EObject> extends IEObjectAware<T> {
    /**
    * Retrieves the {@link EObject}s which depend on the given {@link EObject}.
    * Retrieves the {@link EObject}s which depend on the given {@link EObject}.
    *
    * @param elem The {@link EObject} to retrieve elements which depend on it.
    * @return The {@link List} of {@link EObject} which depend on elem.
    * @param elem
    * The {@link EObject} to retrieve elements which depend on it.
    * @return The {@link List} of {@link EObject} which depend on elem.
    */
    public List<EObject> getDependingElements(EObject elem);
    public List<EObject> getDependingElements(T elem);
    }
    ......@@ -17,9 +17,9 @@ package org.fortiss.tooling.ext.variability.service;
    import java.util.List;
    import org.eclipse.emf.ecore.EObject;
    import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService;
    /**
    * Interface of the DependingElementProviderService which resolves semantic
    * and syntactic dependencies between model elements.
    ......@@ -29,7 +29,8 @@ import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService;
    public interface IDependingElementProviderService extends IIntrospectiveKernelService {
    /** Name of the respective extension point. */
    /* package */static final String EXTENSION_POINT_NAME = "org.fortiss.af3.variability.dependingElementProvider";
    /* package */static final String EXTENSION_POINT_NAME =
    "org.fortiss.af3.variability.dependingElementProvider";
    /** Name of the respective configuration element. */
    /* package */ static final String CONFIGURATION_ELEMENT_NAME = "dependingElementProvider";
    ......@@ -41,16 +42,20 @@ public interface IDependingElementProviderService extends IIntrospectiveKernelSe
    /**
    * Retrieves all depending elements for the given {@link EObject}.
    *
    * @param obj The {@link EObject} to retrieve the elements which depend on it.
    * @return The {@link List} of {@link EObject} which depend on the obj.
    * @param obj
    * The {@link EObject} to retrieve the elements which depend on it.
    * @return The {@link List} of {@link EObject} which depend on the obj.
    */
    public List<EObject> getDependingElements(EObject obj);
    /**
    * Registers the given {@link IDependingElementProvider} in this service.
    * Registers the given {@link IDependingElementProvider} in this service.
    *
    * @param provider The {@link IDependingElementProvider} to register.
    * @param cls The subclass of {@link EObject} the given provider shall be used for.
    * @param provider
    * The {@link IDependingElementProvider} to register.
    * @param cls
    * The subclass of {@link EObject} the given provider shall be used for.
    */
    public void registerDependingElementProvider(IDependingElementProvider<? extends EObject> provider, Class<? extends EObject> cls);
    public void registerDependingElementProvider(
    IDependingElementProvider<? extends EObject> provider, Class<? extends EObject> cls);
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment