Skip to content

Commit d6d674d

Browse files
authored
Merge pull request #53
feat(normalize-class): remove references from `ObjectFactory` and `JAXBDebug` during class normalization
2 parents d7dbeb6 + 7b7f8da commit d6d674d

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

plugins/src/main/java/io/github/rawvoid/jaxb/plugin/NormalizeClassPlugin.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ private void removeAndReplaceClass(List<ClassOutline> removeClasses, ClassOutlin
9393
var removeClass = classOutline.implClass;
9494
removeFromParentContainer(removeClass);
9595
var jPackage = removeClass.getPackage();
96+
removeFromObjectFactory(jPackage, removeClass);
97+
removeFromDebugClass(removeClass);
9698

9799
outline.getClasses().forEach(c -> {
98100
var definedClass = c.implClass;
@@ -112,6 +114,34 @@ private void removeAndReplaceClass(List<ClassOutline> removeClasses, ClassOutlin
112114
});
113115
}
114116

117+
private void removeFromDebugClass(JDefinedClass removeClass) {
118+
var codeModel = removeClass.owner();
119+
var defaultPackage = codeModel._package("");
120+
var debugClass = defaultPackage._getClass("JAXBDebug");
121+
if (debugClass == null) {
122+
return;
123+
}
124+
var classes = defaultPackage.classes();
125+
while (classes.hasNext()) {
126+
if (classes.next() == debugClass) {
127+
classes.remove();
128+
break;
129+
}
130+
}
131+
}
132+
133+
private void removeFromObjectFactory(JPackage jPackage, JDefinedClass removeClass) {
134+
if (jPackage == null) {
135+
return;
136+
}
137+
var objectFactoryClass = jPackage._getClass("ObjectFactory");
138+
if (objectFactoryClass == null) {
139+
return;
140+
}
141+
objectFactoryClass.methods().removeIf(method ->
142+
ClassNameDetector.detect(method.type().fullName(), removeClass.fullName()));
143+
}
144+
115145
private void removeFromParentContainer(JDefinedClass definedClass) {
116146
var parentContainer = definedClass.parentContainer();
117147

0 commit comments

Comments
 (0)