Hi Steinar,

May I suggest you re-open/recreate the issue on the Liquibase bugtracker ?

Meanwhile you can build your own liquibase-core bundle using a pom.xml like
below, you simple add your own version of
src/main/java/liquibase/parser/core/xml/LiquibaseEntityResolver.java to the
project

(I noticed I've added an empty
src\main\resources\META-INF\servicesliquibase.license.LicenseService as
well, maybe that fixes the encryption exception)

----------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------

<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
    <modelVersion>4.0.0</modelVersion>
    <groupId>your.domain.org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <packaging>bundle</packaging>
    <version>4.9.1.1-SNAPSHOT</version>

    <!--
        A wrapped bundle to contain liquibase-core
     -->

    <properties>
        <liquibase.version>4.9.1</liquibase.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>${liquibase.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>3.0.0-M5</version>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>5.1.4</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>

<Bundle-Activator>liquibase.osgi.Activator</Bundle-Activator>
                        <Bundle-Name>${project.name}</Bundle-Name>

<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                        <Import-Package>
                            javax.activation*;resolution:=optional,

javax.servlet.*;version="[2.6,4)";resolution:=optional,
                            javax.sql.*,
                            org.osgi.*,
                            org.yaml.snakeyaml.*,
                            *;resolution:=optional
                        </Import-Package>
                        <Export-Package>
                            liquibase.*;version="${liquibase.version}",
                        </Export-Package>

<Embed-Dependency>liquibase-core;inline=true</Embed-Dependency>
                        <Include-Resource>
                            {maven-resources},
                            {maven-dependencies},
                            liquibase=target/classes/liquibase
                        </Include-Resource>
                        <Provide-Capability>
                            osgi.serviceloader;
osgi.serviceloader=liquibase.serializer.ChangeLogSerializer,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.parser.NamespaceDetails,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.database.Database,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.change.Change,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.database.DatabaseConnection,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.precondition.Precondition,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.serializer.SnapshotSerializer,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.configuration.AutoloadedConfigurations,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.diff.DiffGenerator,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.lockservice.LockService,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.changelog.ChangeLogHistoryService,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.datatype.LiquibaseDataType,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.configuration.ConfigurationValueProvider,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.logging.LogService,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.snapshot.SnapshotGenerator,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.parser.ChangeLogParser,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.servicelocator.ServiceLocator,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.diff.compare.DatabaseObjectComparator,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.command.LiquibaseCommand,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.license.LicenseService,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.diff.output.changelog.ChangeGenerator,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.executor.Executor,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.structure.DatabaseObject,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.parser.SnapshotParser,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.hub.HubService,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.command.CommandStep,
                            osgi.serviceloader;
osgi.serviceloader=liquibase.sqlgenerator.SqlGenerator
                        </Provide-Capability>
                        <Require-Capability>
                            osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.registrar)",
                            osgi.extender;
filter:="(osgi.extender=osgi.serviceloader.processor)",
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.serializer.ChangeLogSerializer)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.parser.NamespaceDetails)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.database.Database)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.change.Change)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.database.DatabaseConnection)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.precondition.Precondition)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.serializer.SnapshotSerializer)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.configuration.AutoloadedConfigurations)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.diff.DiffGenerator)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.lockservice.LockService)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.changelog.ChangeLogHistoryService)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.datatype.LiquibaseDataType)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.configuration.ConfigurationValueProvider)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.logging.LogService)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.snapshot.SnapshotGenerator)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.parser.ChangeLogParser)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.servicelocator.ServiceLocator)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.diff.compare.DatabaseObjectComparator)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.command.LiquibaseCommand)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.license.LicenseService)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.diff.output.changelog.ChangeGenerator)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.executor.Executor)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.structure.DatabaseObject)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.parser.SnapshotParser)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.hub.HubService)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.command.CommandStep)";
cardinality:=multiple,
                            osgi.serviceloader;
filter:="(osgi.serviceloader=liquibase.sqlgenerator.SqlGenerator)";
cardinality:=multiple
                        </Require-Capability>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>7</source>
                    <target>7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <scm>
        <!-- TODO -->
    </scm>
    <distributionManagement>
        <!-- TODO -->
    </distributionManagement>

</project>

On Sun, Aug 14, 2022 at 5:30 PM Steinar Bang <s...@dod.no> wrote:

> >>>>> Steven Huypens <steven.huyp...@gmail.com>:
>
> > Hi Steinar,
> > The xsd stacktrace can be explained by this liquibase-issue I think :
> > https://github.com/liquibase/liquibase/issues/2817
>
> > They closed it incorrectly imho
>
> The "fix" was just changed wording in the exception message...? (unless
> I'm missing something...?
>
> If so, then I agree with you.
>
> I know from googling that Nathan Woxland is reluctant to making XML
> parsing not requiring validation (a stack overflow answer from 2010, I
> think it was), so not requiring XSDs is not an option.
>
> I have managed to make a workaround/hackaround, by slurping the
> offending XSD file out of liquibase-core:
>
> https://gist.github.com/steinarb/96840701be3aa387f670b191f44ac14d#file-pom-xml-L164
> and then adding it to the resource classpath of the bundle liquibase is
> executed from
>
> https://gist.github.com/steinarb/96840701be3aa387f670b191f44ac14d#file-pom-xml-L157
> (liquibase looks in www.liquibase.org/xml/ns/dbchangelog/ on the
> classpath, for the XSD files)
>
> But with the additional require-capability
>
> https://gist.github.com/steinarb/96840701be3aa387f670b191f44ac14d#file-pom-xml-L127
> it does feel to me, like liquibase 4.x isn't very OSGi friendly... all
> of this have to be done in the build config for every bundle that is to
> run liquibase...
>
> Oh well!
>
>

Reply via email to