Skip to content

Commit ac80d4f

Browse files
authored
Merge pull request #1407 from Lustmored/Persistence1.3
Attempt to use new persistance namespaces without breaking BC
2 parents c8e43f5 + 4b38027 commit ac80d4f

10 files changed

+32
-3
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/config/SymfonyPhpReferenceContributor.java

+3
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ public class SymfonyPhpReferenceContributor extends PsiReferenceContributor {
4545
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ManagerRegistry", "getRepository"),
4646
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectManager", "getRepository"),
4747
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ManagerRegistry", "getRepository"),
48+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ObjectManager", "getRepository"),
4849
new MethodMatcher.CallToSignature("\\Doctrine\\ORM\\EntityManager", "getReference"),
4950
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ManagerRegistry", "getManagerForClass"),
51+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ManagerRegistry", "getManagerForClass"),
5052
new MethodMatcher.CallToSignature("\\Doctrine\\ORM\\QueryBuilder", "update"),
5153
new MethodMatcher.CallToSignature("\\Doctrine\\ORM\\QueryBuilder", "delete"),
5254
new MethodMatcher.CallToSignature("\\Doctrine\\ORM\\QueryBuilder", "from"),
@@ -161,6 +163,7 @@ public PsiReference[] getReferencesByElement(@NotNull PsiElement psiElement, @No
161163

162164
MethodMatcher.MethodMatchParameter methodMatchParameter = new MethodMatcher.StringParameterMatcher(psiElement, 0)
163165
.withSignature("\\Doctrine\\Common\\Persistence\\ObjectManager", "find")
166+
.withSignature("\\Doctrine\\Persistence\\ObjectManager", "find")
164167
.match();
165168

166169
if(methodMatchParameter == null) {

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/EntityHelper.java

+4
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,10 @@ public static Collection<DoctrineModel> getModelClasses(Project project, Map<Str
758758

759759
PhpClass repositoryInterface = PhpElementsUtil.getInterface(PhpIndex.getInstance(project), DoctrineTypes.REPOSITORY_INTERFACE);
760760

761+
if(repositoryInterface == null) {
762+
repositoryInterface = PhpElementsUtil.getInterface(PhpIndex.getInstance(project), "\\Doctrine\\Persistence\\ObjectRepository");
763+
}
764+
761765
Collection<DoctrineModel> models = new ArrayList<>();
762766
for (Map.Entry<String, String> entry : shortcutNames.entrySet()) {
763767
for(PhpClass phpClass: PhpIndexUtil.getPhpClassInsideNamespace(project, entry.getValue())) {

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectManagerFindTypeProvider.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ public Collection<? extends PhpNamedElement> getBySignature(String expression, S
8585
return Collections.emptySet();
8686
}
8787

88-
if (!PhpElementsUtil.isMethodInstanceOf((Method) phpNamedElement, "\\Doctrine\\Common\\Persistence\\ObjectManager", "find")) {
88+
if (!(
89+
PhpElementsUtil.isMethodInstanceOf((Method) phpNamedElement, "\\Doctrine\\Common\\Persistence\\ObjectManager", "find") ||
90+
PhpElementsUtil.isMethodInstanceOf((Method) phpNamedElement, "\\Doctrine\\Persistence\\ObjectManager", "find")
91+
)) {
8992
return Collections.emptySet();
9093
}
9194

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryResultTypeProvider.java

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ public class ObjectRepositoryResultTypeProvider implements PhpTypeProvider3 {
3232
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "findOneBy"),
3333
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "findAll"),
3434
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "findBy"),
35+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ObjectRepository", "find"),
36+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ObjectRepository", "findOneBy"),
37+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ObjectRepository", "findAll"),
38+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ObjectRepository", "findBy"),
3539
};
3640

3741
final static char TRIM_KEY = '\u0184';

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryTypeProvider.java

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class ObjectRepositoryTypeProvider implements PhpTypeProvider3 {
2828
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ManagerRegistry", "getRepository"),
2929
new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectManager", "getRepository"),
3030
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ManagerRegistry", "getRepository"),
31+
new MethodMatcher.CallToSignature("\\Doctrine\\Persistence\\ObjectManager", "getRepository"),
3132
};
3233

3334
final public static char TRIM_KEY = '\u0185';

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/completion/DoctrineCompletionContributor.java

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
4343
if(!(
4444
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Common\\Persistence\\ObjectManager", "getRepository") ||
4545
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Common\\Persistence\\ManagerRegistry", "getRepository") ||
46+
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Persistence\\ObjectManager", "getRepository") ||
4647
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Persistence\\ManagerRegistry", "getRepository")
4748
)) {
4849
return;

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/intention/DoctrineRepositoryClassConstantIntention.java

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull Psi
5757

5858
return null != new MethodMatcher.StringParameterMatcher(parent, 0)
5959
.withSignature(SymfonyPhpReferenceContributor.REPOSITORY_SIGNATURES)
60+
.withSignature("Doctrine\\Persistence\\ObjectManager", "find")
6061
.withSignature("Doctrine\\Common\\Persistence\\ObjectManager", "find") // @TODO: missing somewhere
6162
.match();
6263
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/metadata/ObjectRepositoryFindGotoCompletionRegistrar.java

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public void register(@NotNull GotoCompletionRegistrarParameter registrar) {
4141
MethodMatcher.MethodMatchParameter methodMatchParameter = new MethodMatcher.ArrayParameterMatcher(context, 0)
4242
.withSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "findOneBy")
4343
.withSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "findBy")
44+
.withSignature("\\Doctrine\\Persistence\\ObjectRepository", "findOneBy")
45+
.withSignature("\\Doctrine\\Persistence\\ObjectRepository", "findBy")
4446
.match();
4547

4648
if(methodMatchParameter != null) {

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/metadata/util/DoctrineMetadataUtil.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ public class DoctrineMetadataUtil {
4747

4848
@NotNull
4949
public static Collection<LookupElement> getObjectRepositoryLookupElements(@NotNull Project project) {
50-
return new ArrayList<>(DoctrineRepositoryLookupElement.create(PhpIndex.getInstance(project).getAllSubclasses("\\Doctrine\\Common\\Persistence\\ObjectRepository")));
50+
PhpIndex index = PhpIndex.getInstance(project);
51+
Collection<PhpClass> collection = index.getAllSubclasses("\\Doctrine\\Common\\Persistence\\ObjectRepository");
52+
collection.addAll(index.getAllSubclasses("\\Doctrine\\Persistence\\ObjectRepository"));
53+
54+
return new ArrayList<>(DoctrineRepositoryLookupElement.create(collection));
5155
}
5256

5357
/**

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/querybuilder/QueryBuilderMethodReferenceParser.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,13 @@ private Map<String, String> findRootDefinition(Collection<MethodReference> metho
257257
if(rootAlias != null && repository == null) {
258258
MethodReference methodReference = methodReferences.iterator().next();
259259
PhpClass phpClass = PsiTreeUtil.getParentOfType(methodReference, PhpClass.class);
260-
if(phpClass != null && PhpElementsUtil.isInstanceOf(phpClass, "\\Doctrine\\Common\\Persistence\\ObjectRepository")) {
260+
if(
261+
phpClass != null &&
262+
(
263+
PhpElementsUtil.isInstanceOf(phpClass, "\\Doctrine\\Common\\Persistence\\ObjectRepository") ||
264+
PhpElementsUtil.isInstanceOf(phpClass, "\\Doctrine\\Persistence\\ObjectRepository")
265+
)
266+
) {
261267
for(DoctrineModel model: EntityHelper.getModelClasses(project)) {
262268
String className = model.getPhpClass().getPresentableFQN();
263269
PhpClass resolvedRepoName = EntityHelper.getEntityRepositoryClass(project, className);

0 commit comments

Comments
 (0)