Skip to content

Commit 3fc2247

Browse files
630: Added default values support for all types of plugins
1 parent ce0f04f commit 3fc2247

File tree

3 files changed

+64
-15
lines changed

3 files changed

+64
-15
lines changed

src/com/magento/idea/magento2plugin/actions/generation/generator/code/util/ConvertPluginParamsToString.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,19 @@ public static String execute(
6666
if (element instanceof Parameter) {
6767
String parameterText = PhpCodeUtil.paramToString(element);
6868

69-
if (parameterText.contains(Package.fqnSeparator)) {
69+
// Parameter has default value.
70+
if (parameterText.contains("=")) {
71+
final String[] paramParts = parameterText.split("=");
72+
parameterText = paramParts[0];
73+
parameterText += " = ";
74+
String defaultValue = paramParts[1];
75+
76+
if (defaultValue.contains(Package.fqnSeparator)) {
77+
final String[] fqnArray = defaultValue.split("\\\\");
78+
defaultValue = fqnArray[fqnArray.length - 1];
79+
}
80+
parameterText += defaultValue;
81+
} else if (parameterText.contains(Package.fqnSeparator)) {
7082
final String[] fqnArray = parameterText.split("\\\\");
7183
parameterText = fqnArray[fqnArray.length - 1];
7284
}

src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceExtractor.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import com.jetbrains.php.lang.psi.elements.Parameter;
1010
import com.jetbrains.php.lang.psi.elements.PhpClass;
1111
import com.jetbrains.php.lang.psi.elements.PhpReturnType;
12+
import com.jetbrains.php.lang.psi.elements.impl.ClassConstImpl;
13+
import com.jetbrains.php.lang.psi.elements.impl.ClassConstantReferenceImpl;
14+
import com.jetbrains.php.lang.psi.elements.impl.ParameterImpl;
1215
import com.jetbrains.php.lang.psi.resolve.types.PhpType;
1316
import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor;
1417
import java.util.Collection;
@@ -39,6 +42,7 @@ public void visitPhpClass(final PhpClass phpClass) {
3942
@Override
4043
public void visitPhpParameter(final Parameter parameter) {
4144
PhpClassReferenceExtractor.this.processParameterReference(parameter);
45+
PhpClassReferenceExtractor.this.processUsedForDefaultValueTypeReference(parameter);
4246
}
4347

4448
/**
@@ -77,6 +81,39 @@ public void processParameterReference(final @NotNull Parameter parameter) {
7781
this.processReference(getNameFromFqn(complexType), complexType, parameter);
7882
}
7983

84+
/**
85+
* Process reference for complex type if it is exists in the default parameter value.
86+
*
87+
* @param parameter Parameter
88+
*/
89+
public void processUsedForDefaultValueTypeReference(final @NotNull Parameter parameter) {
90+
if (!(parameter instanceof ParameterImpl)) {
91+
return;
92+
}
93+
final PsiElement defaultValue = parameter.getDefaultValue();
94+
95+
if (!(defaultValue instanceof ClassConstantReferenceImpl)) {
96+
return;
97+
}
98+
final PsiElement constant = ((ClassConstantReferenceImpl) defaultValue).resolve();
99+
100+
if (!(constant instanceof ClassConstImpl)) {
101+
return;
102+
}
103+
final PhpClass usedTypeClass = ((ClassConstImpl) constant).getContainingClass();
104+
105+
if (usedTypeClass == null) {
106+
return;
107+
}
108+
final String complexType = extractComplexType(usedTypeClass.getType());
109+
110+
if (complexType == null) {
111+
return;
112+
}
113+
114+
this.processReference(getNameFromFqn(complexType), complexType, parameter);
115+
}
116+
80117
/**
81118
* Process reference for non primitive return type.
82119
*

src/com/magento/idea/magento2plugin/actions/generation/references/PhpClassReferenceResolver.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -142,22 +142,22 @@ private Map<String, String> importWithConflictResolve(
142142
referencesToReplace.put(name, originalFqn);
143143
} else {
144144
final String importedFqn = aliases.get(name);
145-
if (!PhpLangUtil.equalsClassNames(importedFqn, originalFqn)) {
146-
if (importedFqn != null) {
147-
final String originalName = PhpLangUtil.toShortName(originalFqn);
148-
final String fqnForOriginalName = aliases.get(originalName);
149-
if (fqnForOriginalName != null
150-
&& !PhpLangUtil.equalsClassNames(fqnForOriginalName, originalFqn)) {
151-
referencesToReplace.put(name, originalFqn);
152-
} else {
153-
referencesToReplace.put(name, originalName);
154-
if (fqnForOriginalName == null) {
155-
insertUseStatement(scopeHolder, originalName, originalFqn);
156-
}
157-
}
145+
146+
if (importedFqn != null
147+
&& !PhpLangUtil.equalsClassNames(importedFqn, originalFqn)) {
148+
final String originalName = PhpLangUtil.toShortName(originalFqn);
149+
final String fqnForOriginalName = aliases.get(originalName);
150+
if (fqnForOriginalName != null
151+
&& !PhpLangUtil.equalsClassNames(fqnForOriginalName, originalFqn)) {
152+
referencesToReplace.put(name, originalFqn);
158153
} else {
159-
insertUseStatement(scopeHolder, name, originalFqn);
154+
referencesToReplace.put(name, originalName);
155+
if (fqnForOriginalName == null) {
156+
insertUseStatement(scopeHolder, originalName, originalFqn);
157+
}
160158
}
159+
} else {
160+
insertUseStatement(scopeHolder, name, originalFqn);
161161
}
162162
}
163163
}

0 commit comments

Comments
 (0)