Giter VIP home page Giter VIP logo

Comments (6)

aldenquimby avatar aldenquimby commented on July 19, 2024

I'm not too familiar with maven, but does this just mean adding <optional>true</optional> to the joda time dependency in the sql2o pom?

from sql2o.

aaberg avatar aaberg commented on July 19, 2024

Hmm. Could it be that easy?
I will try it right away. Test it a bit and see if it works.

from sql2o.

aldenquimby avatar aldenquimby commented on July 19, 2024

So I just tried it out, and I think it works.

After reading this article, it might make sense to approach a lot of things like flyway does. I don't know if you are familiar with flyway, but it's a database migration library that has a similar situation with optional dependencies on many different database implementations.

Easiest way to handle it seems to be have optional dependencies, and check for existence at run time, which you are already doing with joda's DateTime in Convert.java. The article I linked above includes a useful utility for dealing with this:

public static boolean isPresent(String className) {
    try {
        Class.forName(className);
        return true;
    } catch (Throwable ex) {
        return false;
    }
}

...

if (isPresent("com.optionaldependency.DependencyClass")) {
    // This block will never execute when the dependency is not present
    executeCodeLinkingToDependency();
}

from sql2o.

aaberg avatar aaberg commented on July 19, 2024

Nice, this is definitely the way to go. I will assign you to this ticket, then I will try to do something similar with the slf4j dependency.

I think we should cache the result of the isPresent method after it has run, I suspect it may have a performance issue if not. Something like this:

private Boolean present = null;
public static boolean isPresent(String className) {
    if (present == null) {
        try {
            Class.forName(className);
            present = true;
        } catch (Throwable ex) {
            present = false;
        }
    }
    return present;
}

from sql2o.

aldenquimby avatar aldenquimby commented on July 19, 2024

Ok great. Looks like this strategy will work for dealing with Convert.java, but it will not work with addParameter(String name, DateTime value) in Query.java. I will look into possible solutions and send you a pull request for review when I'm done

from sql2o.

aaberg avatar aaberg commented on July 19, 2024

I have a suggestion:
I think it will work to just remove the addParameter(String, DateTime) method, and detect and handle jodatime parameters within the addParameter(String, Object) method.

from sql2o.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.