DataSourceSingleton.java

package com.popx.persistenza;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DataSourceSingleton {
    private static volatile DataSource instance;

    private DataSourceSingleton() {}

    public static DataSource getInstance() {
        if (instance == null) {
            synchronized (DataSourceSingleton.class) {
                if (instance == null) {
                    try {
                        Context initCtx = new InitialContext();
                        Context envCtx = (Context) initCtx.lookup("java:comp/env");
                        instance = (DataSource) envCtx.lookup("jdbc/Popix");
                    } catch (NamingException e) {
                        throw new RuntimeException("Error initializing DataSource", e);
                    }
                }
            }
        }
        return instance;
    }

    // Metodo aggiuntivo per impostare un DataSource mock
    public static void setInstanceForTest(DataSource mockDataSource) {
        instance = mockDataSource;
    }
}