Revert "Hide XmlCodecFactory internals" 78/107878/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 14 Sep 2023 19:56:20 +0000 (21:56 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 14 Sep 2023 20:25:09 +0000 (22:25 +0200)
This reverts commit db06703aa3c1c68d9481b5823c16a570a23dfb6e. It is not
needed as we are about to expose XmlCodec.

JIRA: YANGTOOLS-1541
Change-Id: I861f0363d995517aa6a5a41f1e9077842379dfbe
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/CodecFactory.java [deleted file]
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlCodecFactory.java
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStringInstanceIdentifierCodec.java

diff --git a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/CodecFactory.java b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/CodecFactory.java
deleted file mode 100644 (file)
index 2c96b14..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.data.codec.xml;
-
-import static java.util.Objects.requireNonNull;
-
-import java.util.List;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.codec.AbstractIntegerStringCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.BinaryStringCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.BitsStringCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.BooleanStringCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.DecimalStringCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.EnumStringCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec;
-import org.opendaylight.yangtools.yang.data.util.codec.AbstractCodecFactory;
-import org.opendaylight.yangtools.yang.data.util.codec.SharedCodecCache;
-import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition;
-
-/**
- * A thread-safe factory for instantiating {@link XmlCodec}s.
- */
-abstract sealed class CodecFactory extends AbstractCodecFactory<XmlCodec<?>> permits XmlCodecFactory {
-    private final MountPointContext mountCtx;
-
-    CodecFactory(final MountPointContext mountCtx) {
-        super(mountCtx.getEffectiveModelContext(), new SharedCodecCache<>());
-        this.mountCtx = requireNonNull(mountCtx);
-    }
-
-    final MountPointContext mountPointContext() {
-        return mountCtx;
-    }
-
-    @Override
-    protected final QuotedXmlCodec<?> binaryCodec(final BinaryTypeDefinition type) {
-        return new QuotedXmlCodec<>(BinaryStringCodec.from(type));
-    }
-
-    @Override
-    protected final BooleanXmlCodec booleanCodec(final BooleanTypeDefinition type) {
-        return new BooleanXmlCodec(BooleanStringCodec.from(type));
-    }
-
-    @Override
-    protected final QuotedXmlCodec<?> bitsCodec(final BitsTypeDefinition type) {
-        return new QuotedXmlCodec<>(BitsStringCodec.from(type));
-    }
-
-    @Override
-    protected final EmptyXmlCodec emptyCodec(final EmptyTypeDefinition type) {
-        return EmptyXmlCodec.INSTANCE;
-    }
-
-    @Override
-    protected final QuotedXmlCodec<?> enumCodec(final EnumTypeDefinition type) {
-        return new QuotedXmlCodec<>(EnumStringCodec.from(type));
-    }
-
-    @Override
-    protected final IdentityrefXmlCodec identityRefCodec(final IdentityrefTypeDefinition type,
-            final QNameModule module) {
-        return new IdentityrefXmlCodec(getEffectiveModelContext(), module);
-    }
-
-    @Override
-    protected final XmlStringInstanceIdentifierCodec instanceIdentifierCodec(
-            final InstanceIdentifierTypeDefinition type) {
-        return new XmlStringInstanceIdentifierCodec(getEffectiveModelContext(), this);
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> int8Codec(final Int8TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> int16Codec(final Int16TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> int32Codec(final Int32TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> int64Codec(final Int64TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> decimalCodec(final DecimalTypeDefinition type) {
-        return new NumberXmlCodec<>(DecimalStringCodec.from(type));
-    }
-
-    @Override
-    protected final QuotedXmlCodec<?> stringCodec(final StringTypeDefinition type) {
-        // FIXME: YANGTOOLS-1523: use QuotedXmlCodec
-        return new StringXmlCodec(StringStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> uint8Codec(final Uint8TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> uint16Codec(final Uint16TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> uint32Codec(final Uint32TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final NumberXmlCodec<?> uint64Codec(final Uint64TypeDefinition type) {
-        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
-    }
-
-    @Override
-    protected final UnionXmlCodec<?> unionCodec(final UnionTypeDefinition type, final List<XmlCodec<?>> codecs) {
-        return UnionXmlCodec.create(type, codecs);
-    }
-
-    @Override
-    protected final NullXmlCodec unknownCodec(final UnknownTypeDefinition type) {
-        return NullXmlCodec.INSTANCE;
-    }
-}
index d4e779389f42ab8474aa24cb33cb34239c53b057..fbe3fe86ea126ab465ff0a89142fe2a6a58a92e2 100644 (file)
@@ -7,17 +7,57 @@
  */
 package org.opendaylight.yangtools.yang.data.codec.xml;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
+import java.util.List;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
+import org.opendaylight.yangtools.yang.data.impl.codec.AbstractIntegerStringCodec;
+import org.opendaylight.yangtools.yang.data.impl.codec.BinaryStringCodec;
+import org.opendaylight.yangtools.yang.data.impl.codec.BitsStringCodec;
+import org.opendaylight.yangtools.yang.data.impl.codec.BooleanStringCodec;
+import org.opendaylight.yangtools.yang.data.impl.codec.DecimalStringCodec;
+import org.opendaylight.yangtools.yang.data.impl.codec.EnumStringCodec;
+import org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec;
+import org.opendaylight.yangtools.yang.data.util.codec.AbstractCodecFactory;
+import org.opendaylight.yangtools.yang.data.util.codec.SharedCodecCache;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition;
 
 /**
- * A thread-safe factory for instantiating XML codecs.
+ * A thread-safe factory for instantiating {@link XmlCodec}s.
  */
 @Beta
-public final class XmlCodecFactory extends CodecFactory {
+public final class XmlCodecFactory extends AbstractCodecFactory<XmlCodec<?>> {
+    private final MountPointContext mountCtx;
+
     private XmlCodecFactory(final MountPointContext mountCtx) {
-        super(mountCtx);
+        super(mountCtx.getEffectiveModelContext(), new SharedCodecCache<>());
+        this.mountCtx = requireNonNull(mountCtx);
+    }
+
+    MountPointContext mountPointContext() {
+        return mountCtx;
     }
 
     /**
@@ -39,4 +79,100 @@ public final class XmlCodecFactory extends CodecFactory {
     public static XmlCodecFactory create(final EffectiveModelContext context) {
         return create(MountPointContext.of(context));
     }
+
+    @Override
+    protected XmlCodec<?> binaryCodec(final BinaryTypeDefinition type) {
+        return new QuotedXmlCodec<>(BinaryStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> booleanCodec(final BooleanTypeDefinition type) {
+        return new BooleanXmlCodec(BooleanStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> bitsCodec(final BitsTypeDefinition type) {
+        return new QuotedXmlCodec<>(BitsStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> emptyCodec(final EmptyTypeDefinition type) {
+        return EmptyXmlCodec.INSTANCE;
+    }
+
+    @Override
+    protected XmlCodec<?> enumCodec(final EnumTypeDefinition type) {
+        return new QuotedXmlCodec<>(EnumStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> identityRefCodec(final IdentityrefTypeDefinition type, final QNameModule module) {
+        return new IdentityrefXmlCodec(getEffectiveModelContext(), module);
+    }
+
+    @Override
+    protected XmlCodec<YangInstanceIdentifier> instanceIdentifierCodec(final InstanceIdentifierTypeDefinition type) {
+        return new XmlStringInstanceIdentifierCodec(getEffectiveModelContext(), this);
+    }
+
+    @Override
+    protected XmlCodec<?> int8Codec(final Int8TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> int16Codec(final Int16TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> int32Codec(final Int32TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> int64Codec(final Int64TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> decimalCodec(final DecimalTypeDefinition type) {
+        return new NumberXmlCodec<>(DecimalStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> stringCodec(final StringTypeDefinition type) {
+        // FIXME: YANGTOOLS-1523: use QuotedXmlCodec
+        return new StringXmlCodec(StringStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> uint8Codec(final Uint8TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> uint16Codec(final Uint16TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> uint32Codec(final Uint32TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> uint64Codec(final Uint64TypeDefinition type) {
+        return new NumberXmlCodec<>(AbstractIntegerStringCodec.from(type));
+    }
+
+    @Override
+    protected XmlCodec<?> unionCodec(final UnionTypeDefinition type, final List<XmlCodec<?>> codecs) {
+        return UnionXmlCodec.create(type, codecs);
+    }
+
+    @Override
+    protected XmlCodec<?> unknownCodec(final UnknownTypeDefinition type) {
+        return NullXmlCodec.INSTANCE;
+    }
 }
index bcf0889db172e0893a6e3cda546019b51430982e..63e7d80fdef4e254cab7d2efe2294869179d107b 100644 (file)
@@ -32,10 +32,10 @@ final class XmlStringInstanceIdentifierCodec extends AbstractModuleStringInstanc
     private static final ThreadLocal<Deque<NamespaceContext>> TL_CONTEXT = new ThreadLocal<>();
 
     private final @NonNull DataSchemaContextTree dataContextTree;
-    private final @NonNull CodecFactory codecFactory;
+    private final @NonNull XmlCodecFactory codecFactory;
     private final @NonNull EffectiveModelContext context;
 
-    XmlStringInstanceIdentifierCodec(final EffectiveModelContext context, final CodecFactory codecFactory) {
+    XmlStringInstanceIdentifierCodec(final EffectiveModelContext context, final XmlCodecFactory codecFactory) {
         this.context = requireNonNull(context);
         this.codecFactory = requireNonNull(codecFactory);
         dataContextTree = DataSchemaContextTree.from(context);