Skip to content

Fix read thread access of Doctrine entity lookup rendering #2437

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 9, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class DoctrineEntityLookupElement extends LookupElement {

private final String entityName;
private final PhpClass className;
private final String className;
private boolean useClassNameAsLookupString = false;
private DoctrineTypes.Manager manager;
private boolean isWeak = false;
Expand All @@ -26,14 +25,14 @@ public DoctrineEntityLookupElement(String entityName, PhpClass className, boolea
this.useClassNameAsLookupString = useClassNameAsLookupString;
}

public DoctrineEntityLookupElement(String entityName, PhpClass className, boolean useClassNameAsLookupString, boolean isWeak) {
this(entityName, className, useClassNameAsLookupString);
public DoctrineEntityLookupElement(String entityName, PhpClass phpClass, boolean useClassNameAsLookupString, boolean isWeak) {
this(entityName, phpClass, useClassNameAsLookupString);
this.isWeak = isWeak;
}

public DoctrineEntityLookupElement(String entityName, PhpClass className) {
public DoctrineEntityLookupElement(String entityName, PhpClass phpClass) {
this.entityName = entityName;
this.className = className;
this.className = StringUtils.stripStart(phpClass.getFQN(), "\\");
}

public DoctrineEntityLookupElement withManager(DoctrineTypes.Manager manager) {
Expand All @@ -44,46 +43,42 @@ public DoctrineEntityLookupElement withManager(DoctrineTypes.Manager manager) {
@NotNull
@Override
public String getLookupString() {

if(this.useClassNameAsLookupString) {
return StringUtils.stripStart(this.className.getPresentableFQN(), "\\");
if (this.useClassNameAsLookupString) {
return this.className;
}

return entityName;
}

public void renderElement(LookupElementPresentation presentation) {

if(this.useClassNameAsLookupString) {
presentation.setItemText(className.getPresentableFQN());
public void renderElement(@NotNull LookupElementPresentation presentation) {
if (this.useClassNameAsLookupString) {
presentation.setItemText(className);
presentation.setTypeText(getLookupString());
} else {
presentation.setItemText(getLookupString());
presentation.setTypeText(className.getPresentableFQN());
presentation.setTypeText(className);
}

presentation.setTypeGrayed(true);
if(isWeak) {
if (isWeak) {
// @TODO: remove weak
presentation.setIcon(getWeakIcon());
} else {
presentation.setIcon(getIcon());
}


}

@Nullable
private Icon getWeakIcon() {
if(manager == null) {
if (manager == null) {
return null;
}

if(manager == DoctrineTypes.Manager.ORM) {
if (manager == DoctrineTypes.Manager.ORM) {
return Symfony2Icons.DOCTRINE_WEAK;
}

if(manager == DoctrineTypes.Manager.MONGO_DB || manager == DoctrineTypes.Manager.COUCH_DB) {
if (manager == DoctrineTypes.Manager.MONGO_DB || manager == DoctrineTypes.Manager.COUCH_DB) {
return Symfony2Icons.NO_SQL;
}

Expand All @@ -92,20 +87,19 @@ private Icon getWeakIcon() {

@Nullable
private Icon getIcon() {
if(manager == null) {
if (manager == null) {
return null;
}

if(manager == DoctrineTypes.Manager.ORM) {
if (manager == DoctrineTypes.Manager.ORM) {
return Symfony2Icons.DOCTRINE;
}

if(manager == DoctrineTypes.Manager.MONGO_DB || manager == DoctrineTypes.Manager.COUCH_DB) {
if (manager == DoctrineTypes.Manager.MONGO_DB || manager == DoctrineTypes.Manager.COUCH_DB) {
return Symfony2Icons.NO_SQL;
}

return null;
}

}