1 package ch.qos.logback.core.model.processor;
2
3 import ch.qos.logback.core.Context;
4 import ch.qos.logback.core.CoreConstants;
5 import ch.qos.logback.core.model.ImportModel;
6 import ch.qos.logback.core.model.Model;
7 import ch.qos.logback.core.util.OptionHelper;
8
9 public class ImportModelHandler extends ModelHandlerBase {
10
11 public ImportModelHandler(Context context) {
12 super(context);
13 }
14
15 static public ModelHandlerBase makeInstance(Context context, ModelInterpretationContext ic) {
16 return new ImportModelHandler(context);
17 }
18
19 @Override
20 protected Class<ImportModel> getSupportedModelClass() {
21 return ImportModel.class;
22 }
23
24 @Override
25 public void handle(ModelInterpretationContext intercon, Model model) throws ModelHandlerException {
26 ImportModel importModel = (ImportModel) model;
27
28 String className = importModel.getClassName();
29 if (OptionHelper.isNullOrEmptyOrAllSpaces(className)) {
30 addWarn("Empty className not allowed");
31 return;
32 }
33
34 String stem = extractStem(className);
35 if (stem == null) {
36 addWarn("[" + className + "] could not be imported due to incorrect format");
37 return;
38 }
39
40 intercon.addImport(stem, className);
41
42 }
43
44 String extractStem(String className) {
45 if (className == null)
46 return null;
47
48 int lastDotIndex = className.lastIndexOf(CoreConstants.DOT);
49 if (lastDotIndex == -1)
50 return null;
51 if ((lastDotIndex + 1) == className.length())
52 return null;
53 return className.substring(lastDotIndex + 1);
54 }
55
56 }