blob: 78a83a9127caf5220d36a7a6098f0184e11be291 [file] [log] [blame]
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();
}
}