/** * Invoke JDBC method. * * @param target target object */ @SneakyThrows public void invoke(final Object target) { method.invoke(target, arguments); } }
@SneakyThrows private Object newClassInstance(final String className) { return Strings.isNullOrEmpty(className) ? null : Class.forName(className).newInstance(); } }
@SneakyThrows @Override public XAConnection wrap(final XADataSource xaDataSource, final Connection connection) { Connection physicalConnection = (Connection) connection.unwrap(Class.forName("com.mysql.jdbc.Connection")); Method method = xaDataSource.getClass().getDeclaredMethod("wrapConnection", Connection.class); method.setAccessible(true); return (XAConnection) method.invoke(xaDataSource, physicalConnection); } }
@Override @SneakyThrows public ExtractorRuleDefinitionEntity load(final String extractorRuleDefinitionFile) { InputStream inputStream = ExtractorRuleDefinitionEntityLoader.class.getClassLoader().getResourceAsStream(extractorRuleDefinitionFile); Preconditions.checkNotNull(inputStream, "Cannot load extractor rule definition file :%s, ", extractorRuleDefinitionFile); return (ExtractorRuleDefinitionEntity) JAXBContext.newInstance(ExtractorRuleDefinitionEntity.class).createUnmarshaller().unmarshal(inputStream); } }
@SneakyThrows protected InputStream getInputStream(final Object value) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream.writeObject(value); objectOutputStream.flush(); objectOutputStream.close(); return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); }
@SneakyThrows @Override public XAConnection wrap(final XADataSource xaDataSource, final Connection connection) { BaseConnection physicalConnection = (BaseConnection) connection.unwrap(Class.forName("org.postgresql.core.BaseConnection")); return new PGXAConnection(physicalConnection); } }
@SneakyThrows @Override public void begin() { xaTransactionManager.getTransactionManager().begin(); }
@Override @SneakyThrows public final Connection getConnection(final String username, final String password) { return getConnection(); }
@SneakyThrows @Override public void commit() { xaTransactionManager.getTransactionManager().commit(); }
@SneakyThrows protected static Map<String, SQLCase> loadSQLCases(final String path) { File file = new File(SQLCasesLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath()); return file.isFile() ? loadSQLCasesFromJar(path, file) : loadSQLCasesFromTargetDirectory(path); }
@SneakyThrows private void recordMethodInvocation(final Class<?> targetClass, final String methodName, final Class<?>[] argumentTypes, final Object[] arguments) { connection.getMethodInvocations().add(new MethodInvocation(targetClass.getMethod(methodName, argumentTypes), arguments)); } }
@SneakyThrows public DistinctQueryResult(final Collection<QueryResult> queryResults, final List<String> distinctColumnLabels) { this.columnLabelAndIndexMap = getColumnLabelAndIndexMap(queryResults.iterator().next()); resultData = getResultData(queryResults, distinctColumnLabels); }
@SneakyThrows private void recordMethodInvocation(final Class<?> targetClass, final String methodName, final Class<?>[] argumentTypes, final Object[] arguments) { connection.getMethodInvocations().add(new MethodInvocation(targetClass.getMethod(methodName, argumentTypes), arguments)); } }
@SneakyThrows private void init(final ExtractorRuleDefinitionEntity ruleDefinitionEntity) { for (ExtractorRuleEntity each : ruleDefinitionEntity.getRules()) { rules.put(each.getId(), (SQLSegmentExtractor) Class.forName(each.getExtractorClass()).newInstance()); } } }
@SneakyThrows private void fill(final Set<QueryRow> resultData, final QueryResult queryResult, final List<Integer> distinctColumnIndexes) { while (queryResult.next()) { List<Object> rowData = new ArrayList<>(queryResult.getColumnCount()); for (int columnIndex = 1; columnIndex <= queryResult.getColumnCount(); columnIndex++) { rowData.add(queryResult.getValue(columnIndex, Object.class)); } resultData.add(new QueryRow(rowData, distinctColumnIndexes)); } }
/** * Renew properties. * * @param propertiesChangedEvent properties changed event */ @SneakyThrows @Subscribe public final synchronized void renew(final PropertiesChangedEvent propertiesChangedEvent) { dataSource = new ShardingDataSource(dataSource.getDataSourceMap(), dataSource.getShardingContext().getShardingRule(), ConfigMapContext.getInstance().getConfigMap(), propertiesChangedEvent.getProps()); }
/** * Renew sharding rule. * * @param shardingRuleChangedEvent sharding rule changed event */ @Subscribe @SneakyThrows public final synchronized void renew(final ShardingRuleChangedEvent shardingRuleChangedEvent) { dataSource = new ShardingDataSource(dataSource.getDataSourceMap(), new OrchestrationShardingRule(shardingRuleChangedEvent.getShardingRuleConfiguration(), dataSource.getDataSourceMap().keySet()), ConfigMapContext.getInstance().getConfigMap(), dataSource.getShardingContext().getShardingProperties().getProps()); }
/** * Renew master-slave data source. * * @param dataSourceChangedEvent data source changed event */ @Subscribe @SneakyThrows public final synchronized void renew(final DataSourceChangedEvent dataSourceChangedEvent) { dataSource.close(); dataSource = new MasterSlaveDataSource(DataSourceConverter.getDataSourceMap(dataSourceChangedEvent.getDataSourceConfigurations()), dataSource.getMasterSlaveRule(), ConfigMapContext.getInstance().getConfigMap(), dataSource.getShardingProperties().getProps()); }
/** * Renew master-slave rule. * * @param masterSlaveRuleChangedEvent master-slave configuration changed event */ @Subscribe @SneakyThrows public final synchronized void renew(final MasterSlaveRuleChangedEvent masterSlaveRuleChangedEvent) { dataSource = new MasterSlaveDataSource(dataSource.getDataSourceMap(), new OrchestrationMasterSlaveRule(masterSlaveRuleChangedEvent.getMasterSlaveRuleConfiguration()), ConfigMapContext.getInstance().getConfigMap(), dataSource.getShardingProperties().getProps()); }
/** * Renew sharding data source. * * @param dataSourceChangedEvent data source changed event */ @Subscribe @SneakyThrows public final synchronized void renew(final DataSourceChangedEvent dataSourceChangedEvent) { dataSource.close(); dataSource = new ShardingDataSource(DataSourceConverter.getDataSourceMap(dataSourceChangedEvent.getDataSourceConfigurations()), dataSource.getShardingContext().getShardingRule(), ConfigMapContext.getInstance().getConfigMap(), dataSource.getShardingContext().getShardingProperties().getProps()); }