summaryrefslogtreecommitdiffstats
path: root/sd-plugin/src/main/java/org/intellij/sdk/language/psi
diff options
context:
space:
mode:
Diffstat (limited to 'sd-plugin/src/main/java/org/intellij/sdk/language/psi')
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java4
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java6
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java7
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java4
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java4
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java4
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java4
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java5
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java4
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java5
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java29
11 files changed, 65 insertions, 11 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java
index 32c943909a2..25ef64b8936 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java
@@ -5,6 +5,10 @@ import com.intellij.navigation.NavigationItem;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiNamedElement;
+/**
+ * This interface represents a declaration in the SD language.
+ * @author shahariel
+ */
public interface SdDeclaration extends PsiElement, PsiNamedElement, NavigationItem {
String getName();
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java
index f1c1cbe560a..5ea5968f0bb 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java
@@ -1,12 +1,18 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package org.intellij.sdk.language.psi;
+/**
+ * This Enum describes the different declarations' types and their names.
+ * @author shahariel
+ */
public enum SdDeclarationType {
DOCUMENT("Document"),
STRUCT("Struct"),
+ ANNOTATION("Annotation"),
SCHEMA_FIELD("Field (in Schema)"),
DOCUMENT_FIELD("Field (in Document)"),
STRUCT_FIELD("Struct-Field"),
+ ANNOTATION_FIELD("Field (in Annotation)"),
DOCUMENT_STRUCT_FIELD("Field (in Struct)"),
IMPORTED_FIELD("Imported Field"),
DOCUMENT_SUMMARY("Document-Summary"),
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java
index 85bac80327a..3801069d408 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java
@@ -9,13 +9,16 @@ import org.intellij.sdk.language.psi.SdDeclaration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-
+/**
+ * This class is used for the extension (in plugin.xml), to enable "find Usages" window take the element description from
+ * here. Used only for the "target" element.
+ * @author shahariel
+ */
public class SdElementDescriptionProvider implements ElementDescriptionProvider {
/**
* Controls the headline of the element in the "Find Usages" window
* @param psiElement the element to describe
- * @param elementDescriptionLocation
* @return a string with the description to write in the headline
*/
@Nullable
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java
index 5d9647dd0b3..9cb9690cd5b 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java
@@ -7,6 +7,10 @@ import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.util.PsiTreeUtil;
import org.intellij.sdk.language.SdFileType;
+/**
+ * This class is a factory of psi elements in the SD PSI tree.
+ * @author shahariel
+ */
public class SdElementFactory {
private static final String GENERAL_FILE_TEXT = "search {document %s {} rank-profile %s {}}";
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java
index 7306f5568f6..a091d444d8e 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java
@@ -6,6 +6,10 @@ import org.intellij.sdk.language.SdLanguage;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
+/**
+ * This class represent a SdElementType.
+ * @author shahariel
+ */
public class SdElementType extends IElementType {
public SdElementType(@NotNull @NonNls String debugName) {
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java
index 0f736fa96b8..c044bdeeddd 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java
@@ -8,6 +8,10 @@ import org.intellij.sdk.language.SdFileType;
import org.intellij.sdk.language.SdLanguage;
import org.jetbrains.annotations.NotNull;
+/**
+ * This class represent an SD file.
+ * @author shahariel
+ */
public class SdFile extends PsiFileBase {
public SdFile(@NotNull FileViewProvider viewProvider) {
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java
index c199f1c3a7d..c88e3e593bb 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java
@@ -5,6 +5,10 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import org.jetbrains.annotations.NotNull;
+/**
+ * This interface represents an identifier in the SD language (regular identifiers and identifiers with dash).
+ * @author shahariel
+ */
public interface SdIdentifier extends PsiElement {
String getName();
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java
index 9b7b6d03934..bd74a87b551 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java
@@ -3,6 +3,11 @@ package org.intellij.sdk.language.psi;
import com.intellij.psi.PsiNameIdentifierOwner;
+/**
+ * This interface is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a
+ * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more.
+ * @author shahariel
+ */
public interface SdNamedElement extends PsiNameIdentifierOwner {
}
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java
index 28bfcac350d..98e7494389d 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java
@@ -6,6 +6,10 @@ import org.intellij.sdk.language.SdLanguage;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
+/**
+ * This class represent a SdTokenType.
+ * @author shahariel
+ */
public class SdTokenType extends IElementType {
public SdTokenType(@NotNull @NonNls String debugName) {
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java
index 58f54255c7d..2901a642904 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java
@@ -6,6 +6,11 @@ import com.intellij.lang.ASTNode;
import org.intellij.sdk.language.psi.SdNamedElement;
import org.jetbrains.annotations.NotNull;
+/**
+ * This abstract class is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a
+ * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more.
+ * @author shahariel
+ */
public abstract class SdNamedElementImpl extends ASTWrapperPsiElement implements SdNamedElement {
public SdNamedElementImpl(@NotNull ASTNode node) {
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java
index 4fe6f82cad8..bbe140070fe 100644
--- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java
@@ -6,16 +6,16 @@ import com.intellij.lang.ASTNode;
import com.intellij.navigation.ItemPresentation;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.intellij.psi.util.PsiTreeUtil;
import org.intellij.sdk.language.SdIcons;
import org.intellij.sdk.language.SdReference;
import org.intellij.sdk.language.SdUtil;
-import org.intellij.sdk.language.hierarchy.SdHierarchyUtil;
+import org.intellij.sdk.language.psi.SdAnnotationFieldDefinition;
import org.intellij.sdk.language.psi.SdArgumentDefinition;
import org.intellij.sdk.language.psi.SdDeclaration;
import org.intellij.sdk.language.psi.SdDeclarationType;
+import org.intellij.sdk.language.psi.SdDocumentAnnotationDefinition;
import org.intellij.sdk.language.psi.SdDocumentDefinition;
import org.intellij.sdk.language.psi.SdDocumentFieldDefinition;
import org.intellij.sdk.language.psi.SdDocumentStructDefinition;
@@ -32,6 +32,7 @@ import org.intellij.sdk.language.psi.SdImportFieldDefinition;
import org.intellij.sdk.language.psi.SdItemRawScoreDefinition;
import org.intellij.sdk.language.psi.SdQueryDefinition;
import org.intellij.sdk.language.psi.SdRankProfileDefinition;
+import org.intellij.sdk.language.psi.SdSchemaAnnotationDefinition;
import org.intellij.sdk.language.psi.SdSchemaFieldDefinition;
import org.intellij.sdk.language.psi.SdStructFieldDefinition;
import org.intellij.sdk.language.psi.SdSummaryDefinition;
@@ -42,8 +43,9 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.Icon;
/**
- * I this class there are implementations of methods from rules in the .bnf file. While generating the psi files
+ * In this class there are implementations of methods of rules in the .bnf file. While generating the psi files
* (classes and interfaces) the implementations would be taken from here.
+ * @author shahariel
*/
public class SdPsiImplUtil {
@@ -69,12 +71,17 @@ public class SdPsiImplUtil {
return SdDeclarationType.DOCUMENT;
} else if (declaration instanceof SdDocumentStructDefinition) {
return SdDeclarationType.STRUCT;
+ } else if (declaration instanceof SdSchemaAnnotationDefinition ||
+ declaration instanceof SdDocumentAnnotationDefinition) {
+ return SdDeclarationType.ANNOTATION;
} else if (declaration instanceof SdDocumentStructFieldDefinition) {
return SdDeclarationType.DOCUMENT_STRUCT_FIELD;
} else if (declaration instanceof SdDocumentFieldDefinition) {
return SdDeclarationType.DOCUMENT_FIELD;
} else if (declaration instanceof SdStructFieldDefinition) {
return SdDeclarationType.STRUCT_FIELD;
+ } else if (declaration instanceof SdAnnotationFieldDefinition) {
+ return SdDeclarationType.ANNOTATION_FIELD;
} else if (declaration instanceof SdQueryDefinition) {
return SdDeclarationType.QUERY;
} else if (declaration instanceof SdItemRawScoreDefinition) {
@@ -120,7 +127,7 @@ public class SdPsiImplUtil {
// ################################### //
// ##### getName implementations ##### //
// ################################### //
-
+
@NotNull
public static String getName(SdIdentifier element) {
if (element != null) {
@@ -137,7 +144,7 @@ public class SdPsiImplUtil {
if (declaration instanceof SdImportFieldDefinition) {
ASTNode asNode = declaration.getNode().findChildByType(SdTypes.AS);
node = declaration.getNode().findChildByType(SdTypes.IDENTIFIER_VAL, asNode);
- } else if (declaration instanceof SdRankProfileDefinition || declaration instanceof SdDocumentSummaryDefinition
+ } else if (declaration instanceof SdRankProfileDefinition || declaration instanceof SdDocumentSummaryDefinition
|| declaration instanceof SdQueryDefinition) {
node = declaration.getNode().findChildByType(SdTypes.IDENTIFIER_WITH_DASH_VAL);
} else {
@@ -254,7 +261,7 @@ public class SdPsiImplUtil {
public String getPresentableText() {
if (element instanceof SdFunctionDefinition) {
return SdUtil.createFunctionDescription((SdFunctionDefinition) element);
- }
+ }
SdRankProfileDefinition rankProfileParent = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class);
if (rankProfileParent != null) {
if (element instanceof SdQueryDefinition || element instanceof SdItemRawScoreDefinition) {
@@ -277,7 +284,8 @@ public class SdPsiImplUtil {
if (element instanceof SdFile) {
return SdIcons.FILE;
} else if (element instanceof SdSchemaFieldDefinition || element instanceof SdDocumentFieldDefinition ||
- element instanceof SdQueryDefinition || element instanceof SdItemRawScoreDefinition) {
+ element instanceof SdAnnotationFieldDefinition || element instanceof SdQueryDefinition ||
+ element instanceof SdItemRawScoreDefinition) {
return AllIcons.Nodes.Field;
} else if (element instanceof SdStructFieldDefinition ||
element instanceof SdDocumentStructFieldDefinition) {
@@ -296,6 +304,9 @@ public class SdPsiImplUtil {
return SdIcons.DOCUMENT_SUMMARY;
} else if (element instanceof SdDocumentDefinition) {
return SdIcons.DOCUMENT;
+ } else if (element instanceof SdSchemaAnnotationDefinition ||
+ element instanceof SdDocumentAnnotationDefinition) {
+ return AllIcons.Nodes.ObjectTypeAttribute;
}
else {
return null;
@@ -306,7 +317,7 @@ public class SdPsiImplUtil {
public static ItemPresentation getPresentation(final SdSummaryDefinition element) {
return new ItemPresentation() {
-
+
@Override
public String getPresentableText() {
return element.getName();
@@ -327,7 +338,7 @@ public class SdPsiImplUtil {
public static ItemPresentation getPresentation(final SdFirstPhaseDefinition element) {
return new ItemPresentation() {
-
+
@Override
public String getPresentableText() {
SdRankProfileDefinition rankProfile = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class);