// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package oracle.jdbc.driver; import java.io.IOException; import java.io.InputStream; import java.lang.management.ManagementFactory; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverAction; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.sql.Timestamp; import java.util.Enumeration; import java.util.Hashtable; import java.util.Map; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import javax.management.InstanceAlreadyExistsException; import javax.management.JMException; import javax.management.MBeanServer; import javax.management.ObjectName; import oracle.jdbc.OracleDatabaseMetaData; import oracle.jdbc.babelfish.BabelfishCallableStatement; import oracle.jdbc.babelfish.BabelfishConnection; import oracle.jdbc.babelfish.BabelfishGenericProxy; import oracle.jdbc.babelfish.BabelfishPreparedStatement; import oracle.jdbc.babelfish.BabelfishStatement; import oracle.jdbc.babelfish.TranslationManager; import oracle.jdbc.babelfish.Translator; import oracle.jdbc.driver.BlockSource.ThreadedCachingBlockSource; import oracle.jdbc.logging.annotations.DefaultLogger; import oracle.jdbc.logging.annotations.DisableTrace; import oracle.jdbc.logging.annotations.Feature; import oracle.jdbc.logging.annotations.Supports; import oracle.jdbc.proxy.ProxyFactory; import oracle.net.nt.TimeoutInterruptHandler; import oracle.security.pki.OraclePKIProvider; @DefaultLogger("oracle.jdbc") @Supports({Feature.CONNECT}) public class OracleDriver implements Driver { public static final String oracle_string = "oracle"; public static final String jdbc_string = "jdbc"; public static final String protocol_string = "protocol"; public static final String user_string = "user"; public static final String password_string = "password"; public static final String database_string = "database"; public static final String server_string = "server"; /** @deprecated */ public static final String access_string = "access"; /** @deprecated */ public static final String protocolFullName_string = "protocolFullName"; public static final String logon_as_internal_str = "internal_logon"; public static final String proxy_client_name = "oracle.jdbc.proxyClientName"; public static final String prefetch_string = "prefetch"; public static final String row_prefetch_string = "rowPrefetch"; public static final String default_row_prefetch_string = "defaultRowPrefetch"; public static final String batch_string = "batch"; public static final String execute_batch_string = "executeBatch"; public static final String default_execute_batch_string = "defaultExecuteBatch"; public static final String process_escapes_string = "processEscapes"; public static final String accumulate_batch_result = "AccumulateBatchResult"; public static final String j2ee_compliance = "oracle.jdbc.J2EE13Compliant"; public static final String v8compatible_string = "V8Compatible"; public static final String permit_timestamp_date_mismatch_string = "oracle.jdbc.internal.permitBindDateDefineTimestampMismatch"; public static final String prelim_auth_string = "prelim_auth"; public static final String SetFloatAndDoubleUseBinary_string = "SetFloatAndDoubleUseBinary"; /** @deprecated */ public static final String xa_trans_loose = "oracle.jdbc.XATransLoose"; public static final String tcp_no_delay = "oracle.jdbc.TcpNoDelay"; public static final String read_timeout = "oracle.jdbc.ReadTimeout"; public static final String defaultnchar_string = "oracle.jdbc.defaultNChar"; public static final String defaultncharprop_string = "defaultNChar"; public static final String useFetchSizeWithLongColumn_prop_string = "useFetchSizeWithLongColumn"; public static final String useFetchSizeWithLongColumn_string = "oracle.jdbc.useFetchSizeWithLongColumn"; public static final String remarks_string = "remarks"; public static final String report_remarks_string = "remarksReporting"; public static final String synonyms_string = "synonyms"; public static final String include_synonyms_string = "includeSynonyms"; public static final String restrict_getTables_string = "restrictGetTables"; public static final String fixed_string_string = "fixedString"; public static final String dll_string = "oracle.jdbc.ocinativelibrary"; public static final String nls_lang_backdoor = "oracle.jdbc.ociNlsLangBackwardCompatible"; public static final String disable_defineColumnType_string = "disableDefineColumnType"; public static final String convert_nchar_literals_string = "oracle.jdbc.convertNcharLiterals"; public static final String dataSizeUnitsPropertyName = ""; public static final String dataSizeBytes = ""; public static final String dataSizeChars = ""; public static final String set_new_password_string = "OCINewPassword"; public static final String retain_v9_bind_behavior_string = "oracle.jdbc.RetainV9LongBindBehavior"; public static final String no_caching_buffers = "oracle.jdbc.FreeMemoryOnEnterImplicitCache"; static final int EXTENSION_TYPE_ORACLE_ERROR = -3; static final int EXTENSION_TYPE_GEN_ERROR = -2; static final int EXTENSION_TYPE_TYPE4_CLIENT = 0; static final int EXTENSION_TYPE_TYPE4_SERVER = 1; static final int EXTENSION_TYPE_TYPE2_CLIENT = 2; static final int EXTENSION_TYPE_TYPE2_SERVER = 3; private static final int NUMBER_OF_EXTENSION_TYPES = 4; private OracleDriverExtension[] driverExtensions = new OracleDriverExtension[4]; private static final String DRIVER_PACKAGE_STRING = "driver"; private static final String[] driverExtensionClassNames = new String[]{"oracle.jdbc.driver.T4CDriverExtension", "oracle.jdbc.driver.T4CDriverExtension", "oracle.jdbc.driver.T2CDriverExtension", "oracle.jdbc.driver.T2SDriverExtension"}; private static Properties driverAccess; protected static Connection defaultConn = null; private static OracleDriver defaultDriver = null; public static final Map systemTypeMap; private static final String DEFAULT_CONNECTION_PROPERTIES_RESOURCE_NAME = "/oracle/jdbc/defaultConnectionProperties.properties"; protected static final Properties DEFAULT_CONNECTION_PROPERTIES; private static ObjectName diagnosticMBeanObjectName; public OracleDriver() { } @DisableTrace public static void registerMBeans() { try { MBeanServer var0 = null; try { Class var1 = Class.forName("oracle.as.jmx.framework.PortableMBeanFactory"); Object var2 = var1.newInstance(); Method var3 = var1.getMethod("getMBeanServer"); var0 = (MBeanServer)var3.invoke(var2); } catch (NoClassDefFoundError var6) { var0 = ManagementFactory.getPlatformMBeanServer(); } catch (ClassNotFoundException var7) { var0 = ManagementFactory.getPlatformMBeanServer(); } catch (NoSuchMethodException var8) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Found Oracle Apps MBeanServer but not the getMBeanServer method.", var8); var0 = ManagementFactory.getPlatformMBeanServer(); } catch (InstantiationException var9) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Found Oracle Apps MBeanServer but could not create an instance.", var9); var0 = ManagementFactory.getPlatformMBeanServer(); } catch (IllegalAccessException var10) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Found Oracle Apps MBeanServer but could not access the getMBeanServer method.", var10); var0 = ManagementFactory.getPlatformMBeanServer(); } catch (InvocationTargetException var11) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Found Oracle Apps MBeanServer but the getMBeanServer method threw an exception.", var11); var0 = ManagementFactory.getPlatformMBeanServer(); } if (var0 != null) { ClassLoader var15 = OracleDriver.class.getClassLoader(); String var16 = var15 == null ? "nullLoader" : var15.getClass().getName(); int var17 = 0; while(true) { String var4 = var16 + "@" + Integer.toHexString((var15 == null ? 0 : var15.hashCode()) + var17++); diagnosticMBeanObjectName = new ObjectName("com.oracle.jdbc:type=diagnosability,name=" + var4); try { var0.registerMBean(new OracleDiagnosabilityMBean(), diagnosticMBeanObjectName); break; } catch (InstanceAlreadyExistsException var12) { ; } } } else { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Unable to find an MBeanServer so no MBears are registered."); } } catch (JMException var13) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Error while registering Oracle JDBC Diagnosability MBean.", var13); } catch (Throwable var14) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Error while registering Oracle JDBC Diagnosability MBean.", var14); } } @Supports({Feature.PLATFORM}) public static void unRegisterMBeans() { try { MBeanServer var0 = null; try { Class var1 = Class.forName("oracle.as.jmx.framework.PortableMBeanFactory"); Object var2 = var1.newInstance(); Method var3 = var1.getMethod("getMBeanServer"); var0 = (MBeanServer)var3.invoke(var2); } catch (Throwable var6) { var0 = ManagementFactory.getPlatformMBeanServer(); } if (var0 != null) { try { ClassLoader var8 = OracleDriver.class.getClassLoader(); String var9 = var8 == null ? "nullLoader" : var8.getClass().getName(); byte var10 = 0; StringBuilder var10000 = (new StringBuilder()).append(var9).append("@"); int var10001 = var8 == null ? 0 : var8.hashCode(); byte var10002 = var10; int var11 = var10 + 1; String var4 = var10000.append(Integer.toHexString(var10001 + var10002)).toString(); diagnosticMBeanObjectName = new ObjectName("com.oracle.jdbc:type=diagnosability,name=" + var4); var0.unregisterMBean(diagnosticMBeanObjectName); } catch (Throwable var5) { Logger.getLogger("oracle.jdbc").log(Level.INFO, "Unabled to unregister Oracle JDBC Diagnosability MBean: " + var5.getMessage()); } } else { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Unable to find an MBeanServer to unregister Oracle JDBC Diagnosability MBean."); } } catch (Throwable var7) { Logger.getLogger("oracle.jdbc").log(Level.WARNING, "Error while unregistering Oracle JDBC Diagnosability MBean.", var7); } } @Supports({Feature.PLATFORM}) private static void deregister() { unRegisterMBeans(); OracleTimeoutThreadPerVM.stopWatchdog(); ThreadedCachingBlockSource.stopBlockReleaserThread(); HAManager.shutdownAll(); TimeoutInterruptHandler.stopTimer(); } public Connection connect(String var1, Properties var2) throws SQLException { if (var1 == null) { throw (SQLException)((SQLException)DatabaseError.createSqlException(296).fillInStackTrace()); } else { if (var1.regionMatches(0, "jdbc:default:connection", 0, 23)) { String var3 = "jdbc:oracle:kprb"; int var4 = var1.length(); if (var4 > 23) { var1 = var3.concat(var1.substring(23, var1.length())); } else { var1 = var3.concat(":"); } var3 = null; } int var11 = oracleDriverExtensionTypeFromURL(var1); if (var11 == -2) { return null; } else if (var11 == -3) { throw (SQLException)((SQLException)DatabaseError.createSqlException(67).fillInStackTrace()); } else { OracleDriverExtension var12 = null; var12 = this.driverExtensions[var11]; if (var12 == null) { try { synchronized(this) { if (var12 == null) { var12 = (OracleDriverExtension)Class.forName(driverExtensionClassNames[var11]).newInstance(); this.driverExtensions[var11] = var12; } else { var12 = this.driverExtensions[var11]; } } } catch (Exception var10) { ; } } if (var2 == null) { var2 = new Properties(); } Enumeration var5 = DriverManager.getDrivers(); final Driver var6; while(var5.hasMoreElements()) { var6 = (Driver)((Driver)var5.nextElement()); if (var6 instanceof OracleDriver) { break; } } while(var5.hasMoreElements()) { var6 = (Driver)((Driver)var5.nextElement()); if (var6 instanceof OracleDriver) { try { AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws SQLException { DriverManager.deregisterDriver(var6); return null; } }); } catch (PrivilegedActionException var8) { throw (SQLException)var8.getException(); } } } var6 = null; Object var13; if (var11 == 2 && var2.containsKey("connection_pool") && var2.getProperty("connection_pool").equals("connection_pool")) { var13 = (PhysicalConnection)var12.getConnection(var1, var2); ((PhysicalConnection)var13).protocolId = var11; } else { String var7 = null; if (var2 != null) { var7 = var2.getProperty("oracle.jdbc.sqlTranslationProfile"); } if (var7 == null) { var7 = PhysicalConnection.getSystemPropertySqlTranslationProfile(); } if (var7 != null) { var13 = this.babelfishConnect(var2, var7, var1, var12, var11); } else { var13 = (PhysicalConnection)var12.getConnection(var1, var2); ((PhysicalConnection)var13).protocolId = var11; } } return (Connection)var13; } } } @Supports({Feature.SQL_TRANSLATION}) private Connection babelfishConnect(Properties var1, String var2, String var3, OracleDriverExtension var4, int var5) throws SQLException { var1.put("oracle.jdbc.sqlTranslationProfile", var2); var2 = null; if (var1 != null) { var2 = var1.getProperty("oracle.jdbc.sqlErrorTranslationFile"); } if (var2 == null) { var2 = System.getProperty("oracle.jdbc.sqlErrorTranslationFile", (String)null); } if (var2 != null) { var1.put("oracle.jdbc.sqlErrorTranslationFile", var2); } var2 = null; if (var1 != null) { var2 = var1.getProperty("user"); if (var2 == null) { var2 = var1.getProperty("oracle.jdbc.user"); } } if (var2 == null) { var2 = System.getProperty("oracle.jdbc.user", (String)null); } if (var2 == null) { Hashtable var6 = PhysicalConnection.parseUrl(var3, (String)null, (String)null); var2 = (String)var6.get("user"); } var1.put("user", var2); ProxyFactory var11 = ProxyFactory.createJDBCProxyFactory(new Class[]{BabelfishGenericProxy.class, BabelfishConnection.class, BabelfishStatement.class, BabelfishPreparedStatement.class, BabelfishCallableStatement.class}); Translator var7 = TranslationManager.getTranslator(var3, var1.getProperty("user"), var1.getProperty("oracle.jdbc.sqlTranslationProfile"), var1.getProperty("oracle.jdbc.sqlErrorTranslationFile")); try { PhysicalConnection var8 = (PhysicalConnection)var4.getConnection(var3, var1); var8.protocolId = var5; Connection var9 = (Connection)var11.proxyFor(var8); ((BabelfishConnection)var9).setTranslator(var7); var7.activateServerTranslation(var8); return var9; } catch (SQLException var10) { throw var7.translateError(var10); } } public Connection defaultConnection() throws SQLException { if (defaultConn == null || defaultConn.isClosed()) { Class var1 = OracleDriver.class; synchronized(OracleDriver.class) { if (defaultConn == null || defaultConn.isClosed()) { defaultConn = this.connect("jdbc:oracle:kprb:", new Properties()); } } } return defaultConn; } static final int oracleDriverExtensionTypeFromURL(String var0) { int var1 = var0.indexOf(58); if (var1 == -1) { return -2; } else if (!var0.regionMatches(true, 0, "jdbc", 0, var1)) { return -2; } else { ++var1; int var2 = var0.indexOf(58, var1); if (var2 == -1) { return -2; } else if (!var0.regionMatches(true, var1, "oracle", 0, var2 - var1)) { return -2; } else { ++var2; int var3 = var0.indexOf(58, var2); String var4 = null; if (var3 == -1) { return -3; } else { var4 = var0.substring(var2, var3); if (var4.equals("thin")) { return 0; } else { return !var4.equals("oci8") && !var4.equals("oci") ? -3 : 2; } } } } } @Supports({Feature.PLATFORM}) public boolean acceptsURL(String var1) throws SQLException { if (var1 == null) { throw (SQLException)((SQLException)DatabaseError.createSqlException(296).fillInStackTrace()); } else if (var1.startsWith("jdbc:oracle:")) { return oracleDriverExtensionTypeFromURL(var1) > -2; } else { return false; } } @Supports({Feature.METADATA}) public DriverPropertyInfo[] getPropertyInfo(String var1, Properties var2) throws SQLException { Class var3 = null; try { var3 = Class.forName("oracle.jdbc.OracleConnection"); } catch (ClassNotFoundException var16) { ; } int var4 = 0; String[] var5 = new String[150]; String[] var6 = new String[150]; Field[] var7 = var3.getFields(); String var11; for(int var8 = 0; var8 < var7.length; ++var8) { if (var7[var8].getName().startsWith("CONNECTION_PROPERTY_") && !var7[var8].getName().endsWith("_DEFAULT") && !var7[var8].getName().endsWith("_ACCESSMODE")) { try { String var9 = (String)var7[var8].get((Object)null); Field var10 = var3.getField(var7[var8].getName() + "_DEFAULT"); var11 = (String)var10.get((Object)null); if (var4 == var5.length) { String[] var12 = new String[var5.length * 2]; String[] var13 = new String[var5.length * 2]; System.arraycopy(var5, 0, var12, 0, var5.length); System.arraycopy(var6, 0, var13, 0, var5.length); var5 = var12; var6 = var13; } var5[var4] = var9; var6[var4] = var11; ++var4; } catch (IllegalAccessException var14) { ; } catch (NoSuchFieldException var15) { ; } } } Hashtable var17 = PhysicalConnection.parseUrl(var1, (String)null, (String)null); DriverPropertyInfo[] var18 = new DriverPropertyInfo[var4]; for(int var19 = 0; var19 < var4; ++var19) { var11 = var5[var19]; if (var17.containsKey(var11)) { var18[var19] = new DriverPropertyInfo(var11, (String)var17.get(var11)); } else { var18[var19] = new DriverPropertyInfo(var5[var19], var6[var19]); } } return var18; } @Supports({Feature.METADATA}) public int getMajorVersion() { return OracleDatabaseMetaData.getDriverMajorVersionInfo(); } @Supports({Feature.METADATA}) public int getMinorVersion() { return OracleDatabaseMetaData.getDriverMinorVersionInfo(); } @Supports({Feature.METADATA}) public boolean jdbcCompliant() { return true; } @Supports({Feature.PLATFORM}) public String processSqlEscapes(String var1) throws SQLException { OracleSql var2 = new OracleSql((DBConversion)null); var2.initialize(var1); return var2.parse(var1); } @Supports({Feature.METADATA}) public static String getCompileTime() { return BuildInfo.getBuildDate(); } @Supports({Feature.METADATA}) public static String getSystemPropertyFastConnectionFailover(String var0) { return PhysicalConnection.getSystemPropertyFastConnectionFailover(var0); } @Supports({Feature.METADATA}) public static boolean getSystemPropertyDateZeroTime() { String var0 = PhysicalConnection.getSystemPropertyDateZeroTime("false"); return var0.equalsIgnoreCase("true"); } @Supports({Feature.PLATFORM}) public Logger getParentLogger() throws SQLFeatureNotSupportedException { return Logger.getLogger("oracle"); } static { try { if (defaultDriver == null) { defaultDriver = new oracle.jdbc.OracleDriver(); DriverManager.registerDriver(defaultDriver, OracleDriver::deregister); } AccessController.doPrivileged(new PrivilegedAction() { public Object run() { OracleDriver.registerMBeans(); return null; } }); Timestamp var0 = Timestamp.valueOf("2000-01-01 00:00:00.0"); } catch (SQLException var4) { Logger.getLogger("oracle.jdbc.driver").log(Level.SEVERE, "SQLException in static block.", var4); } catch (RuntimeException var5) { Logger.getLogger("oracle.jdbc.driver").log(Level.SEVERE, "RuntimeException in static block.", var5); } try { new OraclePKIProvider(); } catch (Throwable var3) { ; } systemTypeMap = new Hashtable(2); try { systemTypeMap.put("SYS.ANYDATA", Class.forName("oracle.sql.AnyDataFactory")); systemTypeMap.put("SYS.ANYTYPE", Class.forName("oracle.sql.TypeDescriptorFactory")); } catch (ClassNotFoundException var2) { ; } DEFAULT_CONNECTION_PROPERTIES = new Properties(); try { InputStream var6 = PhysicalConnection.class.getResourceAsStream("/oracle/jdbc/defaultConnectionProperties.properties"); if (var6 != null) { DEFAULT_CONNECTION_PROPERTIES.load(var6); } } catch (IOException var1) { ; } diagnosticMBeanObjectName = null; } }