1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind.codegen;
7   
8   import gov.nist.secauto.metaschema.databind.codegen.typeinfo.IMetaschemaClassFactory;
9   
10  import java.io.IOException;
11  import java.net.URI;
12  import java.nio.file.Path;
13  
14  import edu.umd.cs.findbugs.annotations.NonNull;
15  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
16  
17  class PackageProductionImpl implements IPackageProduction {
18    @NonNull
19    private final URI xmlNamespace;
20    @NonNull
21    private final IGeneratedClass packageInfoClass;
22  
23    @SuppressFBWarnings(value = "CT_CONSTRUCTOR_THROW", justification = "Use of final fields")
24    public PackageProductionImpl(
25        @NonNull PackageMetadata metadata,
26        @NonNull IMetaschemaClassFactory classFactory,
27        @NonNull Path targetDirectory)
28        throws IOException {
29      this.xmlNamespace = metadata.getXmlNamespace();
30      this.packageInfoClass = classFactory.generatePackageInfoClass(
31          metadata.getPackageName(),
32          this.xmlNamespace,
33          metadata.getModuleProductions(),
34          targetDirectory);
35    }
36    //
37    // public static String formatMarkdown(@NonNull IFlexmarkMarkupString<?> markup)
38    // {
39    // // TODO: seemingly unused method. Remove?
40    // Formatter.Builder builder =
41    // Formatter.builder(FlexmarkConfiguration.FLEXMARK_CONFIG);
42    // builder.set(ObjectUtils.notNull(Formatter.FORMAT_FLAGS),
43    // LineAppendable.F_WHITESPACE_REMOVAL);
44    // // builder.set(Formatter.ESCAPE_SPECIAL_CHARS, false);
45    // Formatter formatter = builder.build();
46    // String markdown = markup.toMarkdown(formatter).trim();
47    // markdown = markdown.replace("\\&", "&");
48    // markdown = markdown.replace("\"", "\\\"");
49    // return markdown;
50    // }
51  
52    @Override
53    public URI getXmlNamespace() {
54      return xmlNamespace;
55    }
56  
57    /**
58     * Get the generated package-info class associated with this package.
59     *
60     * @return the package-info class
61     */
62    @Override
63    public IGeneratedClass getGeneratedClass() {
64      return packageInfoClass;
65    }
66  }