forked from bazelbuild/intellij
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[bazelbuild#6664] Add basic model for ExternalWorkspaces - 1/n
- Loading branch information
Showing
5 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
45 changes: 45 additions & 0 deletions
45
base/src/com/google/idea/blaze/base/model/ExternalWorkspaceData.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package com.google.idea.blaze.base.model; | ||
|
||
import com.google.common.collect.ImmutableList; | ||
import com.google.common.collect.ImmutableMap; | ||
import com.google.devtools.intellij.model.ProjectData; | ||
import com.google.idea.blaze.base.ideinfo.ProtoWrapper; | ||
import com.google.idea.blaze.base.model.primitives.ExternalWorkspace; | ||
|
||
public final class ExternalWorkspaceData implements ProtoWrapper<ProjectData.ExternalWorkspaceData> { | ||
public ImmutableMap<String, ExternalWorkspace> workspaces; | ||
|
||
public static ExternalWorkspaceData EMPTY = new ExternalWorkspaceData(ImmutableList.of()); | ||
|
||
public static ExternalWorkspaceData create(ImmutableList<ExternalWorkspace> workspaces) { | ||
return new ExternalWorkspaceData(workspaces); | ||
} | ||
|
||
ExternalWorkspaceData(ImmutableList<ExternalWorkspace> workspaces) { | ||
this.workspaces = ImmutableMap.copyOf( | ||
workspaces | ||
.stream() | ||
.collect( | ||
ImmutableMap.toImmutableMap( | ||
ExternalWorkspace::name, | ||
e -> e)) | ||
); | ||
} | ||
|
||
@Override | ||
public ProjectData.ExternalWorkspaceData toProto() { | ||
ImmutableList<ProjectData.ExternalWorkspace> protoWorkspaces = workspaces | ||
.values() | ||
.stream() | ||
.map(ExternalWorkspace::toProto) | ||
.collect(ImmutableList.toImmutableList()); | ||
|
||
return ProjectData.ExternalWorkspaceData.newBuilder() | ||
.addAllWorkspaces(protoWorkspaces) | ||
.build(); | ||
} | ||
|
||
public static ExternalWorkspaceData fromProto(ProjectData.ExternalWorkspaceData proto) { | ||
return new ExternalWorkspaceData(proto.getWorkspacesList().stream().map(ExternalWorkspace::fromProto).collect(ImmutableList.toImmutableList())); | ||
} | ||
} |
49 changes: 49 additions & 0 deletions
49
base/src/com/google/idea/blaze/base/model/primitives/ExternalWorkspace.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package com.google.idea.blaze.base.model.primitives; | ||
|
||
import com.google.devtools.intellij.model.ProjectData; | ||
|
||
import javax.annotation.Nullable; | ||
import com.google.auto.value.AutoValue; | ||
import com.google.idea.blaze.base.ideinfo.ProtoWrapper; | ||
|
||
@AutoValue | ||
public abstract class ExternalWorkspace implements ProtoWrapper<ProjectData.ExternalWorkspace> { | ||
|
||
public abstract String name(); | ||
|
||
@Nullable | ||
public abstract String repoName(); | ||
|
||
public static ExternalWorkspace fromProto(ProjectData.ExternalWorkspace proto) { | ||
return create(proto.getName(), proto.getRepoName()); | ||
} | ||
|
||
@Override | ||
public ProjectData.ExternalWorkspace toProto() { | ||
ProjectData.ExternalWorkspace.Builder builder = ProjectData.ExternalWorkspace.newBuilder().setName(name()); | ||
if (repoName() != null && !repoName().isEmpty()) { | ||
builder = builder.setRepoName(repoName()); | ||
} | ||
return builder.build(); | ||
} | ||
|
||
public static ExternalWorkspace create(String name, String repoName) { | ||
ExternalWorkspace.Builder builder = ExternalWorkspace.builder().setName(name); | ||
if (repoName != null && !repoName.isEmpty()) { | ||
builder = builder.setRepoName(repoName); | ||
} | ||
return builder.build(); | ||
} | ||
|
||
public static ExternalWorkspace.Builder builder() { | ||
return new AutoValue_ExternalWorkspace.Builder(); | ||
} | ||
|
||
@AutoValue.Builder | ||
public abstract static class Builder { | ||
public abstract Builder setName(String name); | ||
public abstract Builder setRepoName(String repoName); | ||
public abstract ExternalWorkspace build(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters