Merge "BUG-865: removed unnecessary test file."
[yangtools.git] / code-generator / binding-generator-impl / src / main / java / org / opendaylight / yangtools / sal / binding / generator / impl / AbstractTransformerGenerator.java
index eb047955a91d741a3c41111d16e079793242573d..fd280427d41b978c847e301da669b29e9010afc7 100644 (file)
@@ -85,28 +85,66 @@ abstract class AbstractTransformerGenerator {
         }
     }
 
-    private static final Map<SchemaPath, InstanceIdentifier<?>> pathToBindingIdentifier = new ConcurrentHashMap<>();
-
     protected final InstanceIdentifier<?> getBindingIdentifierByPath(final SchemaPath path) {
-        return pathToBindingIdentifier.get(path);
+        return PATH_TO_BINDING_IDENTIFIER.get(path);
     }
 
     protected final void putPathToBindingIdentifier(final SchemaPath path, final InstanceIdentifier<?> bindingIdentifier) {
-        pathToBindingIdentifier.put(path, bindingIdentifier);
+        PATH_TO_BINDING_IDENTIFIER.put(path, bindingIdentifier);
     }
 
     protected final InstanceIdentifier<?> putPathToBindingIdentifier(final SchemaPath path,
             final InstanceIdentifier<?> bindingIdentifier, final Class<?> childClass) {
         @SuppressWarnings({ "unchecked", "rawtypes" })
         InstanceIdentifier<?> newId = bindingIdentifier.builder().child((Class) childClass).build();
-        pathToBindingIdentifier.put(path, newId);
+        PATH_TO_BINDING_IDENTIFIER.put(path, newId);
         return newId;
     }
 
+    protected abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> augmentationTransformerForImpl(Class<?> inputType);
+    protected abstract Class<? extends BindingCodec<Object, Object>> caseCodecForImpl(Class<?> inputType, ChoiceCaseNode node);
+    protected abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> keyTransformerForIdentifiableImpl(Class<?> parentType);
+    protected abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> keyTransformerForIdentifierImpl(Class<?> inputType);
+    protected abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> transformerForImpl(Class<?> inputType);
+
     // Called from LazyGeneratedCodecRegistry
-    abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> augmentationTransformerFor(Class<?> inputType);
-    abstract Class<? extends BindingCodec<Object, Object>> caseCodecFor(Class<?> inputType, ChoiceCaseNode node);
-    abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> keyTransformerForIdentifiable(Class<?> parentType);
-    abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> keyTransformerForIdentifier(Class<?> inputType);
-    abstract Class<? extends BindingCodec<Map<QName, Object>, Object>> transformerFor(Class<?> inputType);
+    final Class<? extends BindingCodec<Map<QName, Object>, Object>> augmentationTransformerFor(final Class<?> inputType) throws TransformerGeneratorException {
+        try {
+            return augmentationTransformerForImpl(inputType);
+        } catch (Exception e) {
+            throw TransformerGeneratorException.wrap(inputType, e);
+        }
+    }
+
+    final Class<? extends BindingCodec<Object, Object>> caseCodecFor(final Class<?> inputType, final ChoiceCaseNode node) throws TransformerGeneratorException {
+        try {
+            return caseCodecForImpl(inputType, node);
+        } catch (Exception e) {
+            throw TransformerGeneratorException.wrap(inputType, e);
+        }
+    }
+
+    final Class<? extends BindingCodec<Map<QName, Object>, Object>> keyTransformerForIdentifiable(final Class<?> parentType) throws TransformerGeneratorException {
+        try {
+            return keyTransformerForIdentifiableImpl(parentType);
+        } catch (Exception e) {
+            throw TransformerGeneratorException.wrap(parentType, e);
+        }
+    }
+
+    final Class<? extends BindingCodec<Map<QName, Object>, Object>> keyTransformerForIdentifier(final Class<?> inputType) throws TransformerGeneratorException {
+        try {
+            return keyTransformerForIdentifierImpl(inputType);
+        } catch (Exception e) {
+            throw TransformerGeneratorException.wrap(inputType, e);
+        }
+    }
+
+    final Class<? extends BindingCodec<Map<QName, Object>, Object>> transformerFor(final Class<?> inputType) throws TransformerGeneratorException {
+        try {
+            return transformerForImpl(inputType);
+        } catch (Exception e) {
+            throw TransformerGeneratorException.wrap(inputType, e);
+        }
+    }
 }