summaryrefslogtreecommitdiff
path: root/platform/script-debugger/protocol/protocol-model-generator/src/org/jetbrains/protocolReader/MemberScope.java
blob: 78a83a9127caf5220d36a7a6098f0184e11be291 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package org.jetbrains.protocolReader;

import org.jetbrains.jsonProtocol.ItemDescriptor;
import org.jetbrains.jsonProtocol.ProtocolMetaModel;

import java.util.List;

/**
 * Member scope is used to generate additional types that are used only from method.
 * These types will be named after this method.
 */
abstract class MemberScope implements ResolveAndGenerateScope {
  private final String memberName;
  private final ClassScope classScope;

  MemberScope(ClassScope classScope, String memberName) {
    this.classScope = classScope;
    this.memberName = memberName;
  }

  @Override
  public <T extends ItemDescriptor> TypeDescriptor resolveType(T typedObject) {
    return classScope.generator.generator.resolveType(typedObject, this);
  }

  protected String getMemberName() {
    return memberName;
  }

  public abstract BoxableType generateEnum(String description, List<String> enumConstants);
  public abstract BoxableType generateNestedObject(String description, List<ProtocolMetaModel.ObjectProperty> propertyList);

  @Override
  public String getDomainName() {
    return classScope.generator.domain.domain();
  }

  @Override
  public TypeData.Direction getTypeDirection() {
    return classScope.getTypeDirection();
  }
}