Skip to content

Commit

Permalink
cleanup action now checks unnamed mappings and mutlivalue refs withou…
Browse files Browse the repository at this point in the history
…t oid. also
  • Loading branch information
1azyman committed Apr 10, 2024
1 parent 5caa31b commit a2b7cd4
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ private String cleanupObject(MidPointObject object) {
processor.setHandler(handler);

for (PrismObject<? extends ObjectType> obj : clonedObjects) {
CleanupResult result = processor.process(obj, Source.of(object.getFile(), object.getContent()));
CleanupResult result = processor.process(obj);

updateMissingReferencesSummary(object, result.getMessages());

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.evolveum.midpoint.studio.impl.lang.annotation;

import com.evolveum.midpoint.studio.util.MidPointUtils;
import com.evolveum.midpoint.studio.util.PsiUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType;
import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.lang.annotation.Annotator;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.xml.XmlTag;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;

public class MappingAnnotator implements Annotator, MidPointAnnotator {

private static final String MESSAGE =
"Mapping doesn't have name defined.";

@Override
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
Project project = element.getProject();
if (!MidPointUtils.hasMidPointFacet(project)) {
return;
}

XmlTag mapping = getMappingTypeTag(element);
if (mapping == null) {
return;
}

XmlTag name = MidPointUtils.findSubTag(mapping, MappingType.F_NAME);
if (name != null && StringUtils.isNotEmpty(name.getValue().getText())) {
return;
}

createTagAnnotations(mapping, holder, HighlightSeverity.WARNING, MESSAGE, null);
}

private XmlTag getMappingTypeTag(PsiElement element) {
if (!(element instanceof XmlTag tag)) {
return null;
}

QName type = PsiUtils.getTagXsdType(tag);
if (type == null || !MappingType.COMPLEX_TYPE.equals(type)) {
return null;
}

return tag;
}
}
2 changes: 2 additions & 0 deletions studio-idea-plugin/src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,8 @@
implementationClass="com.evolveum.midpoint.studio.impl.lang.annotation.ShadowRefAnnotator"/>
<annotator language="XML"
implementationClass="com.evolveum.midpoint.studio.impl.lang.intention.ProtectedStringAnnotatorIntention"/>
<annotator language="XML"
implementationClass="com.evolveum.midpoint.studio.impl.lang.annotation.MappingAnnotator"/>

<completion.contributor language="XML"
implementationClass="com.evolveum.midpoint.studio.impl.lang.codeInsight.MidPointCompletionContributor"/>
Expand Down

0 comments on commit a2b7cd4

Please sign in to comment.