Skip to content

Commit 6812db0

Browse files
committed
Remove dead code and unused fields across aesh and aesh-processor
Cleanup found during pre-release code audit: aesh module: - MetadataProviderRegistry: remove unused ABSENT sentinel (was null, never referenced, ConcurrentHashMap can't store null values anyway) - AeshCommandPopulator: remove dead resetField() and getField() methods (superseded by ProcessedOption.resetField() with FieldAccessor) - AeshCommandLineParser: remove dead completeStatus field (all completion status logic uses processedCommand.completeStatus()) aesh-processor module: - AeshAnnotationProcessor: remove unused generatedProviders field (was write-only, never read); fix redundant FQN for ExecutableElement - CodeGenerator: remove 11 dead generate* methods (~90 lines) that were superseded by the createDirect() + emit* approach
1 parent dc0920d commit 6812db0

5 files changed

Lines changed: 1 addition & 142 deletions

File tree

aesh-processor/src/main/java/org/aesh/processor/AeshAnnotationProcessor.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ public class AeshAnnotationProcessor extends AbstractProcessor {
8282
private Messager messager;
8383
private Elements elementUtils;
8484
private Types typeUtils;
85-
private final List<String> generatedProviders = new ArrayList<>();
8685
/** Pairs of (binaryClassName, metadataSimpleName) for the registry switch. */
8786
private final List<String[]> registryEntries = new ArrayList<>();
8887
private String registryPackage;
@@ -165,7 +164,7 @@ private boolean validate(TypeElement element) {
165164
boolean hasNoArgConstructor = false;
166165
for (Element enclosed : element.getEnclosedElements()) {
167166
if (enclosed.getKind() == ElementKind.CONSTRUCTOR) {
168-
javax.lang.model.element.ExecutableElement constructor = (javax.lang.model.element.ExecutableElement) enclosed;
167+
ExecutableElement constructor = (ExecutableElement) enclosed;
169168
if (constructor.getParameters().isEmpty()
170169
&& !constructor.getModifiers().contains(Modifier.PRIVATE)) {
171170
hasNoArgConstructor = true;
@@ -275,8 +274,6 @@ private void generateProvider(TypeElement commandElement) throws IOException {
275274
writer.write(code);
276275
}
277276

278-
generatedProviders.add(fullMetadataName);
279-
280277
// Collect registry entry: binary name (with $ for inner classes) -> fully-qualified metadata class name
281278
String binaryName = elementUtils.getBinaryName(commandElement).toString();
282279
registryEntries.add(new String[] { binaryName, fullMetadataName });

aesh-processor/src/main/java/org/aesh/processor/CodeGenerator.java

Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -874,95 +874,6 @@ private static void generateAccessorClass(StringBuilder sb, String commandSimple
874874
sb.append(" }\n");
875875
}
876876

877-
private static void generateAliases(StringBuilder sb, String[] aliases) {
878-
if (aliases != null && aliases.length > 0) {
879-
sb.append(" .aliases(").append(stringArrayLiteralAsNew(aliases)).append(")\n");
880-
}
881-
}
882-
883-
private static void generateHelpGroup(StringBuilder sb, String helpGroup) {
884-
if (helpGroup != null && !helpGroup.isEmpty()) {
885-
sb.append(" .helpGroup(").append(stringLiteral(helpGroup)).append(")\n");
886-
}
887-
}
888-
889-
private static void generateExclusiveWith(StringBuilder sb, String[] exclusiveWith) {
890-
if (exclusiveWith != null && exclusiveWith.length > 0) {
891-
sb.append(" .exclusiveWith(").append(stringArrayLiteralAsNew(exclusiveWith)).append(")\n");
892-
}
893-
}
894-
895-
private static void generateAllowedValues(StringBuilder sb, String[] allowedValues) {
896-
if (allowedValues != null && allowedValues.length > 0) {
897-
sb.append(" .addAllAllowedValues(").append(stringArrayLiteralAsNew(allowedValues))
898-
.append(")\n");
899-
}
900-
}
901-
902-
private static void generateVisibility(StringBuilder sb, org.aesh.command.option.OptionVisibility visibility) {
903-
if (visibility != org.aesh.command.option.OptionVisibility.BRIEF) {
904-
sb.append(" .visibility(org.aesh.command.option.OptionVisibility.")
905-
.append(visibility.name()).append(")\n");
906-
}
907-
}
908-
909-
// --- Helper methods for generating option component instantiation ---
910-
911-
private static void generateOptionConverter(StringBuilder sb, VariableElement field,
912-
String attributeName, Elements elementUtils) {
913-
String className = getFieldAnnotationClassValue(field, attributeName, elementUtils);
914-
if (className != null && !className.equals(NULL_CONVERTER)) {
915-
sb.append(" .converter(new ").append(className).append("())\n");
916-
}
917-
// When NullConverter (default), skip — build() auto-resolves from type via CLConverterManager
918-
}
919-
920-
private static void generateOptionCompleter(StringBuilder sb, VariableElement field,
921-
String attributeName, boolean isBooleanType, boolean isFileOrResource, Elements elementUtils) {
922-
String className = getFieldAnnotationClassValue(field, attributeName, elementUtils);
923-
if (className != null && !className.equals(NULL_OPTION_COMPLETER)) {
924-
sb.append(" .completer(new ").append(className).append("())\n");
925-
} else if (isBooleanType) {
926-
sb.append(" .completer(new org.aesh.command.impl.completer.BooleanOptionCompleter())\n");
927-
} else if (isFileOrResource) {
928-
sb.append(" .completer(new org.aesh.command.impl.completer.FileOptionCompleter())\n");
929-
}
930-
// When NullOptionCompleter and not boolean/file, skip — null completer is the default
931-
}
932-
933-
private static void generateOptionValidator(StringBuilder sb, VariableElement field,
934-
String attributeName, Elements elementUtils) {
935-
String className = getFieldAnnotationClassValue(field, attributeName, elementUtils);
936-
if (className != null && !className.equals(NULL_VALIDATOR)) {
937-
sb.append(" .validator(new ").append(className).append("())\n");
938-
}
939-
}
940-
941-
private static void generateOptionActivator(StringBuilder sb, VariableElement field,
942-
String attributeName, Elements elementUtils) {
943-
String className = getFieldAnnotationClassValue(field, attributeName, elementUtils);
944-
if (className != null && !className.equals(NULL_ACTIVATOR)) {
945-
sb.append(" .activator(new ").append(className).append("())\n");
946-
}
947-
}
948-
949-
private static void generateOptionRenderer(StringBuilder sb, VariableElement field,
950-
String attributeName, Elements elementUtils) {
951-
String className = getFieldAnnotationClassValue(field, attributeName, elementUtils);
952-
if (className != null && !className.equals(NULL_OPTION_RENDERER)) {
953-
sb.append(" .renderer(new ").append(className).append("())\n");
954-
}
955-
}
956-
957-
private static void generateOptionParser(StringBuilder sb, VariableElement field,
958-
String attributeName, Elements elementUtils) {
959-
String className = getFieldAnnotationClassValue(field, attributeName, elementUtils);
960-
if (className != null && !className.equals(AESH_OPTION_PARSER)) {
961-
sb.append(" .parser(new ").append(className).append("())\n");
962-
}
963-
// When AeshOptionParser (default), skip — ProcessedOption.parser() lazy-creates it
964-
}
965-
966877
// --- Helper methods for createDirect() path ---
967878

968879
/** Emit a converter expression inline (for createDirect() call). */

aesh/src/main/java/org/aesh/command/impl/parser/AeshCommandLineParser.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ public class AeshCommandLineParser<CI extends CommandInvocation> implements Comm
7777
private boolean parsedCommand = false;
7878
private LineParser lineParser;
7979
private static final char DASH = '-';
80-
private CompleteStatus completeStatus;
8180
private AeshCommandLineParser<CI> parent;
8281
private boolean ansiMode = !isNoColorSet();
8382

@@ -924,7 +923,6 @@ public void clear() {
924923
processedCommand.clear();
925924
lastParsedOption = null;
926925
parsedCommand = false;
927-
completeStatus = null;
928926
}
929927
//else find the parsed command and clear that one
930928
else {
@@ -1103,7 +1101,6 @@ public String toString() {
11031101
", isChild=" + isChild +
11041102
", lastParsedOption=" + lastParsedOption +
11051103
", parsedCommand=" + parsedCommand +
1106-
", completeStatus=" + completeStatus +
11071104
'}';
11081105
}
11091106

aesh/src/main/java/org/aesh/command/impl/populator/AeshCommandPopulator.java

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -262,49 +262,6 @@ private List<Field> getAllFields(Class<?> clazz) {
262262
* }
263263
*/
264264

265-
private void resetField(Object instance, String fieldName, boolean hasValue) {
266-
try {
267-
Field field = getField(instance.getClass(), fieldName);
268-
//for some options, the field might be null. eg generatedHelp
269-
//if so we ignore it
270-
if (field == null)
271-
return;
272-
if (!Modifier.isPublic(field.getModifiers()))
273-
field.setAccessible(true);
274-
if (field.getType().isPrimitive()) {
275-
if (boolean.class.isAssignableFrom(field.getType()))
276-
field.set(instance, false);
277-
else if (int.class.isAssignableFrom(field.getType()))
278-
field.set(instance, 0);
279-
else if (short.class.isAssignableFrom(field.getType()))
280-
field.set(instance, 0);
281-
else if (char.class.isAssignableFrom(field.getType()))
282-
field.set(instance, '\u0000');
283-
else if (byte.class.isAssignableFrom(field.getType()))
284-
field.set(instance, 0);
285-
else if (long.class.isAssignableFrom(field.getType()))
286-
field.set(instance, 0L);
287-
else if (float.class.isAssignableFrom(field.getType()))
288-
field.set(instance, 0.0f);
289-
else if (double.class.isAssignableFrom(field.getType()))
290-
field.set(instance, 0.0d);
291-
} else
292-
field.set(instance, null);
293-
} catch (NoSuchFieldException | IllegalAccessException e) {
294-
// Field reset failed, continue
295-
}
296-
}
297-
298-
private Field getField(Class clazz, String fieldName) throws NoSuchFieldException {
299-
for (Class<?> c = clazz; c != null; c = c.getSuperclass()) {
300-
for (Field f : c.getDeclaredFields()) {
301-
if (f.getName().equals(fieldName))
302-
return f;
303-
}
304-
}
305-
return null;
306-
}
307-
308265
@Override
309266
public O getObject() {
310267
return instance;

aesh/src/main/java/org/aesh/command/metadata/MetadataProviderRegistry.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ public final class MetadataProviderRegistry {
3939
private static volatile List<MetadataRegistry> registries;
4040
private static final ConcurrentHashMap<Class<?>, CommandMetadataProvider<?>> cache = new ConcurrentHashMap<>();
4141

42-
/** Sentinel value cached when no provider exists for a command class. */
43-
private static final CommandMetadataProvider<?> ABSENT = null;
44-
4542
private MetadataProviderRegistry() {
4643
}
4744

0 commit comments

Comments
 (0)