Skip to content

Commit 007efe7

Browse files
committed
ReferenceData -> JavaReferenceData - also fix issue with not working reference insert due class loading problem (was broken due java moved to plugin from boot classloader)
1 parent 827018f commit 007efe7

5 files changed

Lines changed: 94 additions & 102 deletions

File tree

‎plugin/src/main/java/com/intellij/java/impl/codeInsight/editorActions/CopyPasteReferenceProcessor.java‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public List<ReferenceTransferableData> collectTransferableData(
7070
return Collections.emptyList();
7171
}
7272

73-
ArrayList<ReferenceData> array = new ArrayList<>();
73+
ArrayList<JavaReferenceData> array = new ArrayList<>();
7474
for (int j = 0; j < startOffsets.length; j++) {
7575
int startOffset = startOffsets[j];
7676
for (PsiElement element : CollectHighlightsUtil.getElementsInRange(file, startOffset, endOffsets[j])) {
@@ -82,18 +82,18 @@ public List<ReferenceTransferableData> collectTransferableData(
8282
return Collections.emptyList();
8383
}
8484

85-
return Collections.singletonList(new ReferenceTransferableData(array.toArray(new ReferenceData[array.size()])));
85+
return Collections.singletonList(new ReferenceTransferableData(array.toArray(new JavaReferenceData[array.size()])));
8686
}
8787

88-
protected abstract void addReferenceData(PsiFile file, int startOffset, PsiElement element, ArrayList<ReferenceData> to);
88+
protected abstract void addReferenceData(PsiFile file, int startOffset, PsiElement element, ArrayList<JavaReferenceData> to);
8989

9090
@Nonnull
9191
@Override
9292
public List<ReferenceTransferableData> extractTransferableData(Transferable content) {
9393
ReferenceTransferableData referenceData = null;
9494
if (CodeInsightSettings.getInstance().ADD_IMPORTS_ON_PASTE != CodeInsightSettings.NO) {
9595
try {
96-
DataFlavor flavor = ReferenceData.getDataFlavor();
96+
DataFlavor flavor = JavaReferenceData.getDataFlavor();
9797
if (flavor != null) {
9898
referenceData = (ReferenceTransferableData)content.getTransferData(flavor);
9999
}
@@ -131,7 +131,7 @@ public void processTransferableData(
131131

132132
PsiDocumentManager.getInstance(project).commitAllDocuments();
133133
assert values.size() == 1;
134-
ReferenceData[] referenceData = values.get(0).getData();
134+
JavaReferenceData[] referenceData = values.get(0).getData();
135135
TRef[] refs = findReferencesToRestore(file, bounds, referenceData);
136136
if (CodeInsightSettings.getInstance().ADD_IMPORTS_ON_PASTE == CodeInsightSettings.ASK) {
137137
askReferencesToRestore(project, refs, referenceData);
@@ -143,21 +143,21 @@ public void processTransferableData(
143143
@RequiredReadAction
144144
protected static void addReferenceData(
145145
PsiElement element,
146-
ArrayList<ReferenceData> array,
146+
ArrayList<JavaReferenceData> array,
147147
int startOffset,
148148
String qClassName,
149149
@Nullable String staticMemberName
150150
) {
151151
TextRange range = element.getTextRange();
152-
array.add(new ReferenceData(
152+
array.add(new JavaReferenceData(
153153
range.getStartOffset() - startOffset,
154154
range.getEndOffset() - startOffset,
155155
qClassName,
156156
staticMemberName
157157
));
158158
}
159159

160-
protected abstract TRef[] findReferencesToRestore(PsiFile file, RangeMarker bounds, ReferenceData[] referenceData);
160+
protected abstract TRef[] findReferencesToRestore(PsiFile file, RangeMarker bounds, JavaReferenceData[] referenceData);
161161

162162
@RequiredReadAction
163163
protected PsiElement resolveReferenceIgnoreOverriding(PsiPolyVariantReference reference) {
@@ -171,10 +171,10 @@ protected PsiElement resolveReferenceIgnoreOverriding(PsiPolyVariantReference re
171171
return referent;
172172
}
173173

174-
protected abstract void restoreReferences(ReferenceData[] referenceData, TRef[] refs);
174+
protected abstract void restoreReferences(JavaReferenceData[] referenceData, TRef[] refs);
175175

176176
@RequiredUIAccess
177-
private static void askReferencesToRestore(Project project, PsiElement[] refs, ReferenceData[] referenceData) {
177+
private static void askReferencesToRestore(Project project, PsiElement[] refs, JavaReferenceData[] referenceData) {
178178
PsiManager manager = PsiManager.getInstance(project);
179179

180180
ArrayList<Object> array = new ArrayList<>();
@@ -183,7 +183,7 @@ private static void askReferencesToRestore(Project project, PsiElement[] refs, R
183183
PsiElement ref = refs[i];
184184
if (ref != null) {
185185
LOG.assertTrue(ref.isValid());
186-
ReferenceData data = referenceData[i];
186+
JavaReferenceData data = referenceData[i];
187187
PsiClass refClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(data.qClassName, ref.getResolveScope());
188188
if (refClass == null) {
189189
continue;

‎plugin/src/main/java/com/intellij/java/impl/codeInsight/editorActions/JavaCopyPasteReferenceProcessor.java‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class JavaCopyPasteReferenceProcessor extends CopyPasteReferenceProcessor
3636
private static final Logger LOG = Logger.getInstance(JavaCopyPasteReferenceProcessor.class);
3737

3838
@Override
39-
protected void addReferenceData(PsiFile file, int startOffset, PsiElement element, ArrayList<ReferenceData> to) {
39+
protected void addReferenceData(PsiFile file, int startOffset, PsiElement element, ArrayList<JavaReferenceData> to) {
4040
if (element instanceof PsiJavaCodeReferenceElement) {
4141
if (!((PsiJavaCodeReferenceElement)element).isQualified()) {
4242
JavaResolveResult resolveResult = ((PsiJavaCodeReferenceElement)element).advancedResolve(false);
@@ -65,13 +65,13 @@ else if (resolveResult.getCurrentFileResolveScope() instanceof PsiImportStaticSt
6565

6666

6767
@Override
68-
protected PsiJavaCodeReferenceElement[] findReferencesToRestore(PsiFile file, RangeMarker bounds, ReferenceData[] referenceData) {
68+
protected PsiJavaCodeReferenceElement[] findReferencesToRestore(PsiFile file, RangeMarker bounds, JavaReferenceData[] referenceData) {
6969
PsiManager manager = file.getManager();
7070
JavaPsiFacade facade = JavaPsiFacade.getInstance(manager.getProject());
7171
PsiResolveHelper helper = facade.getResolveHelper();
7272
PsiJavaCodeReferenceElement[] refs = new PsiJavaCodeReferenceElement[referenceData.length];
7373
for (int i = 0; i < referenceData.length; i++) {
74-
ReferenceData data = referenceData[i];
74+
JavaReferenceData data = referenceData[i];
7575

7676
PsiClass refClass = facade.findClass(data.qClassName, file.getResolveScope());
7777
if (refClass == null) {
@@ -110,15 +110,15 @@ protected PsiJavaCodeReferenceElement[] findReferencesToRestore(PsiFile file, Ra
110110
}
111111

112112
@Override
113-
protected void restoreReferences(ReferenceData[] referenceData, PsiJavaCodeReferenceElement[] refs) {
113+
protected void restoreReferences(JavaReferenceData[] referenceData, PsiJavaCodeReferenceElement[] refs) {
114114
for (int i = 0; i < refs.length; i++) {
115115
PsiJavaCodeReferenceElement reference = refs[i];
116116
if (reference == null || !reference.isValid()) {
117117
continue;
118118
}
119119
try {
120120
PsiManager manager = reference.getManager();
121-
ReferenceData refData = referenceData[i];
121+
JavaReferenceData refData = referenceData[i];
122122
PsiClass refClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(refData.qClassName, reference.getResolveScope());
123123
if (refClass != null) {
124124
if (refData.staticMemberName == null) {
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
* Copyright 2000-2013 JetBrains s.r.o.
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+
package com.intellij.java.impl.codeInsight.editorActions;
17+
18+
import consulo.logging.Logger;
19+
import consulo.util.lang.lazy.LazyValue;
20+
import jakarta.annotation.Nullable;
21+
22+
import java.awt.datatransfer.DataFlavor;
23+
import java.io.Serializable;
24+
import java.util.function.Supplier;
25+
26+
/**
27+
* @author Denis Fokin
28+
*/
29+
public class JavaReferenceData implements Cloneable, Serializable {
30+
private static final Supplier<DataFlavor> DATA_FLAVOR = LazyValue.nullable(() -> {
31+
try {
32+
return new DataFlavor(
33+
DataFlavor.javaJVMLocalObjectMimeType + ";class=" + JavaReferenceData.class.getName(),
34+
"JavaReferenceData",
35+
JavaReferenceData.class.getClassLoader()
36+
);
37+
}
38+
catch (NoClassDefFoundError | IllegalArgumentException | ClassNotFoundException e) {
39+
Logger.getInstance(JavaReferenceData.class).warn("Fail to initialized JavaReferenceData", e);
40+
return null;
41+
}
42+
});
43+
44+
@Nullable
45+
public static DataFlavor getDataFlavor() {
46+
return DATA_FLAVOR.get();
47+
}
48+
49+
public int startOffset;
50+
public int endOffset;
51+
public final String qClassName;
52+
public final String staticMemberName;
53+
54+
public JavaReferenceData(int startOffset, int endOffset, String qClassName, String staticMemberDescriptor) {
55+
this.startOffset = startOffset;
56+
this.endOffset = endOffset;
57+
this.qClassName = qClassName;
58+
this.staticMemberName = staticMemberDescriptor;
59+
}
60+
61+
@Override
62+
public Object clone() {
63+
try {
64+
return super.clone();
65+
}
66+
catch (CloneNotSupportedException e) {
67+
throw new RuntimeException();
68+
}
69+
}
70+
}

‎plugin/src/main/java/com/intellij/java/impl/codeInsight/editorActions/ReferenceData.java‎

Lines changed: 0 additions & 78 deletions
This file was deleted.

‎plugin/src/main/java/com/intellij/java/impl/codeInsight/editorActions/ReferenceTransferableData.java‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
* @author yole
2525
*/
2626
public class ReferenceTransferableData implements TextBlockTransferableData, Cloneable, Serializable {
27-
private final ReferenceData[] myReferenceDatas;
27+
private final JavaReferenceData[] myReferenceDatas;
2828

29-
public ReferenceTransferableData(ReferenceData[] referenceDatas) {
29+
public ReferenceTransferableData(JavaReferenceData[] referenceDatas) {
3030
myReferenceDatas = referenceDatas;
3131
}
3232

3333
@Override
3434
public DataFlavor getFlavor() {
35-
return ReferenceData.getDataFlavor();
35+
return JavaReferenceData.getDataFlavor();
3636
}
3737

3838
@Override
@@ -42,7 +42,7 @@ public int getOffsetCount() {
4242

4343
@Override
4444
public int getOffsets(int[] offsets, int index) {
45-
for (ReferenceData data : myReferenceDatas) {
45+
for (JavaReferenceData data : myReferenceDatas) {
4646
offsets[index++] = data.startOffset;
4747
offsets[index++] = data.endOffset;
4848
}
@@ -51,7 +51,7 @@ public int getOffsets(int[] offsets, int index) {
5151

5252
@Override
5353
public int setOffsets(int[] offsets, int index) {
54-
for (ReferenceData data : myReferenceDatas) {
54+
for (JavaReferenceData data : myReferenceDatas) {
5555
data.startOffset = offsets[index++];
5656
data.endOffset = offsets[index++];
5757
}
@@ -60,14 +60,14 @@ public int setOffsets(int[] offsets, int index) {
6060

6161
@Override
6262
public ReferenceTransferableData clone() {
63-
ReferenceData[] newReferenceData = new ReferenceData[myReferenceDatas.length];
63+
JavaReferenceData[] newReferenceData = new JavaReferenceData[myReferenceDatas.length];
6464
for (int i = 0; i < myReferenceDatas.length; i++) {
65-
newReferenceData[i] = (ReferenceData) myReferenceDatas[i].clone();
65+
newReferenceData[i] = (JavaReferenceData) myReferenceDatas[i].clone();
6666
}
6767
return new ReferenceTransferableData(newReferenceData);
6868
}
6969

70-
public ReferenceData[] getData() {
70+
public JavaReferenceData[] getData() {
7171
return myReferenceDatas;
7272
}
7373
}

0 commit comments

Comments
 (0)