get rid of intellij.build.toolbox.litegen parameter and use BuildOptions.TOOLBOX_LITE...
[idea/community.git] / platform / core-api / src / com / intellij / openapi / components / ServiceDescriptor.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.components;
3
4 import com.intellij.openapi.application.ApplicationManager;
5 import com.intellij.util.xmlb.annotations.Attribute;
6 import org.jetbrains.annotations.ApiStatus;
7 import org.jetbrains.annotations.Nullable;
8
9 public final class ServiceDescriptor {
10   @Attribute()
11   public String serviceInterface;
12
13   @Attribute()
14   public String serviceImplementation;
15
16   @Attribute
17   public String testServiceImplementation;
18
19   @Attribute
20   public boolean overrides;
21
22   /**
23    * Cannot be specified as part of {@link State} because to get annotation, class must be loaded, but it cannot be done for performance reasons.
24    */
25   @Attribute
26   @ApiStatus.Experimental
27   @Nullable
28   public String configurationSchemaKey;
29
30   public String getInterface() {
31     return serviceInterface != null ? serviceInterface : getImplementation();
32   }
33
34   public String getImplementation() {
35     return testServiceImplementation != null && ApplicationManager.getApplication().isUnitTestMode() ? testServiceImplementation : serviceImplementation;
36   }
37
38   @Override
39   public String toString() {
40     return "ServiceDescriptor(interface=" + getInterface() + ", implementation=" + getImplementation() + ")";
41   }
42 }