• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Camelcade / Perl5-IDEA / #525521839

30 Apr 2026 02:10PM UTC coverage: 76.215% (+0.06%) from 76.16%
#525521839

push

github

hurricup
Testing plugin 2.16.1-SNAPSHOT

14764 of 22542 branches covered (65.5%)

Branch coverage included in aggregate %.

31105 of 37642 relevant lines covered (82.63%)

0.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

70.59
/plugin/backend/src/main/java/com/perl5/lang/perl/idea/sdk/PerlSdkAdditionalData.java
1
/*
2
 * Copyright 2015-2026 Alexandr Evstigneev
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16

17
package com.perl5.lang.perl.idea.sdk;
18

19
import com.intellij.openapi.projectRoots.Sdk;
20
import com.intellij.openapi.projectRoots.SdkAdditionalData;
21
import com.intellij.openapi.projectRoots.SdkModificator;
22
import com.intellij.openapi.projectRoots.impl.SdkAdditionalDataBase;
23
import com.intellij.openapi.util.JDOMUtil;
24
import com.intellij.util.ObjectUtils;
25
import com.perl5.lang.perl.idea.sdk.host.PerlHostData;
26
import com.perl5.lang.perl.idea.sdk.host.PerlHostHandler;
27
import com.perl5.lang.perl.idea.sdk.implementation.PerlImplementationData;
28
import com.perl5.lang.perl.idea.sdk.implementation.PerlImplementationHandler;
29
import com.perl5.lang.perl.idea.sdk.versionManager.PerlVersionManagerAdapter;
30
import com.perl5.lang.perl.idea.sdk.versionManager.PerlVersionManagerData;
31
import com.perl5.lang.perl.idea.sdk.versionManager.PerlVersionManagerHandler;
32
import org.jdom.Element;
33
import org.jetbrains.annotations.Contract;
34
import org.jetbrains.annotations.NotNull;
35
import org.jetbrains.annotations.Nullable;
36
import org.jetbrains.annotations.TestOnly;
37

38
import java.util.Objects;
39

40
public class PerlSdkAdditionalData extends SdkAdditionalDataBase implements SaveAwareSdkAdditionalData {
41
  private final @NotNull PerlHostData<?, ?> myHostData;
42
  private final @NotNull PerlVersionManagerData<?, ?> myVersionManagerData;
43
  private final @NotNull PerlImplementationData<?, ?> myImplementationData;
44
  private @NotNull PerlConfig myConfig;
45

46
  public PerlSdkAdditionalData(@NotNull PerlHostData<?, ?> hostData,
47
                               @NotNull PerlVersionManagerData<?, ?> versionManagerData,
48
                               @NotNull PerlImplementationData<?, ?> implementationData,
49
                               @NotNull PerlConfig perlConfig) {
1✔
50
    myHostData = hostData;
1✔
51
    myVersionManagerData = versionManagerData;
1✔
52
    myImplementationData = implementationData;
1✔
53
    myConfig = perlConfig;
1✔
54
  }
1✔
55

56
  public @NotNull PerlHostData<?, ?> getHostData() {
57
    return myHostData;
1!
58
  }
59

60
  public @NotNull PerlVersionManagerData<?, ?> getVersionManagerData() {
61
    return myVersionManagerData;
1!
62
  }
63

64
  @SuppressWarnings("unused")
65
  public @NotNull PerlImplementationData<?, ?> getImplementationData() {
66
    return myImplementationData;
×
67
  }
68

69
  public @NotNull PerlConfig getConfig() {
70
    return myConfig;
1!
71
  }
72

73
  @Override
74
  protected void markInternalsAsCommited(@NotNull Throwable commitStackTrace) {
75
    myHostData.markAsCommited(commitStackTrace);
1✔
76
    myVersionManagerData.markAsCommited(commitStackTrace);
1✔
77
    myImplementationData.markAsCommited(commitStackTrace);
1✔
78
  }
1✔
79

80
  void setConfig(@NotNull PerlConfig config) {
81
    assertWritable();
1✔
82
    myConfig = config;
1✔
83
  }
1✔
84

85
  public @NotNull PerlVersionManagerHandler<?, ?> getVersionManagerHandler() {
86
    return getVersionManagerData().getHandler();
1!
87
  }
88

89
  public @Nullable PerlVersionManagerAdapter getVersionManagerAdapter() {
90
    var versionManagerPath = getVersionManagerData().getVersionManagerPath();
1✔
91
    return versionManagerPath == null ? null : getVersionManagerHandler().createAdapter(versionManagerPath, getHostData());
1!
92
  }
93

94
  @TestOnly
95
  public boolean isSystem() {
96
    return getVersionManagerData().isSystem();
1✔
97
  }
98

99
  public boolean isLocal() {
100
    return getHostData().getHandler().isLocal();
1✔
101
  }
102

103
  @Contract("null -> null")
104
  public static @Nullable PerlSdkAdditionalData from(@Nullable Sdk sdk) {
105
    return sdk == null ? null : ObjectUtils.tryCast(sdk.getSdkAdditionalData(), PerlSdkAdditionalData.class);
1✔
106
  }
107

108
  @Contract("null -> null")
109
  public static @Nullable PerlSdkAdditionalData from(@Nullable SdkModificator sdkModificator) {
110
    return sdkModificator == null ? null : ObjectUtils.tryCast(sdkModificator.getSdkAdditionalData(), PerlSdkAdditionalData.class);
1!
111
  }
112

113
  public static @NotNull PerlSdkAdditionalData notNullFrom(@NotNull Sdk sdk) {
114
    return Objects.requireNonNull(from(sdk), () -> "No additional data in " + sdk + "; additionalData: " + sdk.getSdkAdditionalData());
1!
115
  }
116

117
  public static @NotNull PerlSdkAdditionalData notNullFrom(@NotNull SdkModificator sdkModificator) {
118
    return Objects.requireNonNull(from(sdkModificator), () -> "No additional data in " + sdkModificator + "; additionalData: " + sdkModificator.getSdkAdditionalData());
1!
119
  }
120

121
  @Override
122
  public void save(@NotNull Element target) {
123
    myHostData.save(target);
1✔
124
    myImplementationData.save(target);
1✔
125
    myVersionManagerData.save(target);
1✔
126
    myConfig.save(target);
1✔
127
  }
1✔
128

129
  @SuppressWarnings("StaticMethodOnlyUsedInOneClass")
130
  static @NotNull SdkAdditionalData load(@NotNull Element source) {
131
    PerlHostData<?, ?> hostData = PerlHostHandler.load(source);
1✔
132
    PerlVersionManagerData<?, ?> versionManagerData = PerlVersionManagerHandler.load(source);
1✔
133
    PerlImplementationData<?, ?> implementationData = PerlImplementationHandler.load(source);
1✔
134
    if (hostData != null && versionManagerData != null && implementationData != null) {
1!
135
      return new PerlSdkAdditionalData(hostData, versionManagerData, implementationData, PerlConfig.load(source));
1✔
136
    }
137
    return new UnknownSdkAdditionalData(source);
×
138
  }
139

140
  private static class UnknownSdkAdditionalData implements SaveAwareSdkAdditionalData {
141
    private final @NotNull Element myAdditionalElement;
142

143
    UnknownSdkAdditionalData(@NotNull Element element) {
×
144
      myAdditionalElement = element.clone();
×
145
    }
×
146

147
    @Override
148
    public void save(@NotNull Element additional) {
149
      JDOMUtil.copyMissingContent(myAdditionalElement, additional);
×
150
    }
×
151
  }
152
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc