package fr.adrienbrault.idea.symfony2plugin.dic; import fr.adrienbrault.idea.symfony2plugin.dic.container.ServiceInterface; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.Set; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class ContainerService { @Nullable private ServiceInterface service; @NotNull private String name; @Nullable private String className; private boolean isPrivate = false; private boolean isWeak = false; private Set<String> classVariants = new HashSet<>(); public ContainerService(@NotNull ServiceInterface service, @Nullable String classResolved) { this.service = service; this.name = service.getId(); this.className = classResolved != null ? classResolved : service.getClassName(); this.isPrivate = !service.isPublic(); this.isWeak = true; } public ContainerService(@NotNull String name, @Nullable String className) { this.name = name; this.className = className; } public ContainerService(@NotNull String name, String className, boolean isWeak) { this(name, className); this.isWeak = isWeak; } public ContainerService(@NotNull String name, @Nullable String className, boolean isWeak, boolean isPrivate) { this(name, className, isWeak); this.isPrivate = isPrivate; } /** * * @return can be null, class, or a parameter name */ @Nullable public String getClassName() { return className; } public void addClassName(@NotNull String className) { this.classVariants.add(className); } @NotNull public Set<String> getClassNames() { Set<String> variants = new HashSet<>(); if(className != null) { variants.add(className); } variants.addAll(classVariants); return variants; } public boolean isWeak() { return isWeak; } public boolean isPrivate() { return isPrivate; } @NotNull public String getName() { return name; } /** * legacy support */ @Nullable public ServiceInterface getService() { return service; } }