From bdb6e3e6eb667ace31ab80c7f956089830e795e1 Mon Sep 17 00:00:00 2001 From: ivyxjc Date: Sun, 8 Apr 2018 10:08:04 +0800 Subject: [PATCH] :art: fix all missing @Override --- core/src/main/java/org/sql2o/Connection.java | 14 ++--- .../sql2o/DefaultResultSetHandlerFactory.java | 17 ++++-- ...DefaultResultSetHandlerFactoryBuilder.java | 12 +++- .../org/sql2o/DelegatingResultSetHandler.java | 1 + .../java/org/sql2o/GenericDatasource.java | 11 +++- core/src/main/java/org/sql2o/Query.java | 35 ++++++++---- .../java/org/sql2o/ResultSetIterable.java | 1 + .../java/org/sql2o/ResultSetIteratorBase.java | 6 +- .../converters/AbstractDateConverter.java | 2 + .../sql2o/converters/BooleanConverter.java | 1 + .../sql2o/converters/ByteArrayConverter.java | 4 +- .../org/sql2o/converters/ConverterBase.java | 1 + .../DefaultEnumConverterFactory.java | 3 + .../converters/InputStreamConverter.java | 1 + .../org/sql2o/converters/NumberConverter.java | 1 + .../org/sql2o/converters/StringConverter.java | 4 +- .../org/sql2o/converters/UUIDConverter.java | 1 + .../converters/joda/DateTimeConverter.java | 5 +- .../converters/joda/LocalTimeConverter.java | 5 +- .../main/java/org/sql2o/data/LazyTable.java | 4 +- .../java/org/sql2o/logging/Slf4jLogger.java | 4 ++ .../java/org/sql2o/logging/SysOutLogger.java | 4 ++ .../main/java/org/sql2o/quirks/NoQuirks.java | 17 +++--- .../DefaultSqlParameterParsingStrategy.java | 6 +- .../org/sql2o/reflection/FieldGetter.java | 5 +- .../org/sql2o/reflection/FieldSetter.java | 5 +- .../reflection/MethodAccessorsGenerator.java | 15 +++-- .../org/sql2o/reflection/MethodGetter.java | 5 +- .../org/sql2o/reflection/MethodSetter.java | 5 +- .../ReflectionFieldGetterFactory.java | 1 + .../ReflectionFieldSetterFactory.java | 1 + .../ReflectionMethodGetterFactory.java | 1 + .../ReflectionMethodSetterFactory.java | 1 + .../ReflectionObjectConstructorFactory.java | 5 +- .../reflection/UnsafeFieldGetterFactory.java | 44 ++++++++++++++- .../reflection/UnsafeFieldSetterFactory.java | 44 ++++++++++++++- .../java/org/sql2o/Sql2oDataSourceTest.java | 6 +- core/src/test/java/org/sql2o/Sql2oTest.java | 55 ++++++++++++++----- .../sql2o/converters/CustomUUIDConverter.java | 2 + .../performance/PerformanceTestBase.java | 1 + .../performance/PojoPerformanceTest.java | 30 ++++++---- .../postgres/converters/JSONConverter.java | 6 +- 42 files changed, 294 insertions(+), 98 deletions(-) diff --git a/core/src/main/java/org/sql2o/Connection.java b/core/src/main/java/org/sql2o/Connection.java index 12caa6c1..e8c2ce59 100644 --- a/core/src/main/java/org/sql2o/Connection.java +++ b/core/src/main/java/org/sql2o/Connection.java @@ -1,12 +1,5 @@ package org.sql2o; -import org.sql2o.connectionsources.ConnectionSource; -import org.sql2o.converters.Converter; -import org.sql2o.converters.ConverterException; -import org.sql2o.logging.LocalLoggerFactory; -import org.sql2o.logging.Logger; -import org.sql2o.quirks.Quirks; - import java.io.Closeable; import java.sql.ResultSet; import java.sql.SQLException; @@ -15,6 +8,12 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.sql2o.connectionsources.ConnectionSource; +import org.sql2o.converters.Converter; +import org.sql2o.converters.ConverterException; +import org.sql2o.logging.LocalLoggerFactory; +import org.sql2o.logging.Logger; +import org.sql2o.quirks.Quirks; import static org.sql2o.converters.Convert.throwIfNull; @@ -263,6 +262,7 @@ void removeStatement(Statement statement){ statements.remove(statement); } + @Override public void close() { boolean connectionIsClosed; try { diff --git a/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactory.java b/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactory.java index bbd0d053..c5dc7ea0 100644 --- a/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactory.java +++ b/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactory.java @@ -1,5 +1,8 @@ package org.sql2o; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; import org.sql2o.converters.Converter; import org.sql2o.converters.ConverterException; import org.sql2o.quirks.Quirks; @@ -9,10 +12,6 @@ import org.sql2o.reflection.Setter; import org.sql2o.tools.AbstractCache; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; - public class DefaultResultSetHandlerFactory implements ResultSetHandlerFactory { private final PojoMetadata metadata; @@ -35,6 +34,7 @@ private static Getter getGetter(final Quirks quirks, final String propertyPath, // getter without converter if (converter == null) return getter; return new Getter() { + @Override public Object getProperty(Object obj) { try { return converter.convert(getter.getProperty(obj)); @@ -43,6 +43,7 @@ public Object getProperty(Object obj) { } } + @Override public Class getType() { return getter.getType(); } @@ -52,11 +53,13 @@ public Class getType() { // i'm too lazy now to rewrite this case so I just call old unoptimized code... // TODO: rewrite, get rid of POJO class return new Getter() { + @Override public Object getProperty(Object obj) { Pojo pojo = new Pojo(metadata, metadata.isCaseSensitive(), obj); return pojo.getProperty(propertyPath, quirks); } + @Override public Class getType() { // doesn't used anyway return Object.class; @@ -79,6 +82,7 @@ private static Setter getSetter( // setter without converter if (converter == null) return setter; return new Setter() { + @Override public void setProperty(Object obj, Object value) { try { setter.setProperty(obj, converter.convert(value)); @@ -87,6 +91,7 @@ public void setProperty(Object obj, Object value) { } } + @Override public Class getType() { return setter.getType(); } @@ -96,11 +101,13 @@ public Class getType() { // i'm too lazy now to rewrite this case so I just call old unoptimized code... // TODO: rewrite, get rid of POJO class return new Setter() { + @Override public void setProperty(Object obj, Object value) { Pojo pojo = new Pojo(metadata, metadata.isCaseSensitive(), obj); pojo.setProperty(propertyPath, value, quirks); } + @Override public Class getType() { // doesn't used anyway return Object.class; @@ -164,6 +171,7 @@ protected ResultSetHandler evaluate(Key key, ResultSetMetaData param) { } }; + @Override @SuppressWarnings("unchecked") public ResultSetHandler newResultSetHandler(final ResultSetMetaData meta) throws SQLException { StringBuilder stringBuilder = new StringBuilder(); @@ -218,6 +226,7 @@ private ResultSetHandler newResultSetHandler0(final ResultSetMetaData meta) t */ useExecuteScalar = converter != null && columnCount == 1 && setters[1] == null; return new ResultSetHandler() { + @Override @SuppressWarnings("unchecked") public T handle(ResultSet resultSet) throws SQLException { if (useExecuteScalar) { diff --git a/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactoryBuilder.java b/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactoryBuilder.java index 5f97fd9e..b3a0cffb 100644 --- a/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactoryBuilder.java +++ b/core/src/main/java/org/sql2o/DefaultResultSetHandlerFactoryBuilder.java @@ -1,10 +1,9 @@ package org.sql2o; +import java.util.Map; import org.sql2o.quirks.Quirks; import org.sql2o.reflection.PojoMetadata; -import java.util.Map; - public class DefaultResultSetHandlerFactoryBuilder implements ResultSetHandlerFactoryBuilder { private boolean caseSensitive; private boolean autoDeriveColumnNames; @@ -12,18 +11,22 @@ public class DefaultResultSetHandlerFactoryBuilder implements ResultSetHandlerFa private Map columnMappings; private Quirks quirks; + @Override public boolean isCaseSensitive() { return caseSensitive; } + @Override public void setCaseSensitive(boolean caseSensitive) { this.caseSensitive = caseSensitive; } + @Override public boolean isAutoDeriveColumnNames() { return autoDeriveColumnNames; } + @Override public void setAutoDeriveColumnNames(boolean autoDeriveColumnNames) { this.autoDeriveColumnNames = autoDeriveColumnNames; } @@ -38,24 +41,29 @@ public void throwOnMappingError(boolean throwOnMappingError) { this.throwOnMappingError = throwOnMappingError; } + @Override public Map getColumnMappings() { return columnMappings; } + @Override public void setColumnMappings(Map columnMappings) { this.columnMappings = columnMappings; } + @Override public Quirks getQuirks() { return quirks; } + @Override public void setQuirks(Quirks quirks) { this.quirks = quirks; } + @Override @SuppressWarnings("unchecked") public ResultSetHandlerFactory newFactory(Class clazz) { PojoMetadata pojoMetadata = new PojoMetadata(clazz, caseSensitive, autoDeriveColumnNames, columnMappings, throwOnMappingError); diff --git a/core/src/main/java/org/sql2o/DelegatingResultSetHandler.java b/core/src/main/java/org/sql2o/DelegatingResultSetHandler.java index 6d46011b..9d48ea55 100644 --- a/core/src/main/java/org/sql2o/DelegatingResultSetHandler.java +++ b/core/src/main/java/org/sql2o/DelegatingResultSetHandler.java @@ -16,6 +16,7 @@ public DelegatingResultSetHandler(ResultSetHandlerFactory factory) { this.factory = factory; } + @Override public E handle(ResultSet resultSet) throws SQLException { if(inner==null) inner = factory.newResultSetHandler(resultSet.getMetaData()); return inner.handle(resultSet); diff --git a/core/src/main/java/org/sql2o/GenericDatasource.java b/core/src/main/java/org/sql2o/GenericDatasource.java index db73f8eb..c065dc14 100644 --- a/core/src/main/java/org/sql2o/GenericDatasource.java +++ b/core/src/main/java/org/sql2o/GenericDatasource.java @@ -1,12 +1,12 @@ package org.sql2o; -import javax.sql.DataSource; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.util.Properties; +import javax.sql.DataSource; /** * Used internally by sql2o, if the {@link Sql2o#Sql2o(String, String, String)} constructor overload. @@ -58,40 +58,49 @@ public String getPassword() { return properties.getProperty("password"); } + @Override public Connection getConnection() throws SQLException { return DriverManager.getConnection(this.getUrl(), properties); } + @Override public Connection getConnection(String username, String password) throws SQLException { Properties info = new Properties(this.properties); set(info,username,password); return DriverManager.getConnection(this.getUrl(), info); } + @Override public PrintWriter getLogWriter() throws SQLException { return DriverManager.getLogWriter(); } + @Override public void setLogWriter(PrintWriter printWriter) throws SQLException { DriverManager.setLogWriter(printWriter); } + @Override public void setLoginTimeout(int i) throws SQLException { DriverManager.setLoginTimeout(i); } + @Override public int getLoginTimeout() throws SQLException { return DriverManager.getLoginTimeout(); } + @Override public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new SQLFeatureNotSupportedException(); } + @Override public T unwrap(Class tClass) throws SQLException { throw new SQLFeatureNotSupportedException(); } + @Override public boolean isWrapperFor(Class aClass) throws SQLException { return false; } diff --git a/core/src/main/java/org/sql2o/Query.java b/core/src/main/java/org/sql2o/Query.java index 98f4b978..f72ea0cc 100644 --- a/core/src/main/java/org/sql2o/Query.java +++ b/core/src/main/java/org/sql2o/Query.java @@ -1,16 +1,5 @@ package org.sql2o; -import org.sql2o.converters.Converter; -import org.sql2o.converters.ConverterException; -import org.sql2o.data.LazyTable; -import org.sql2o.data.Row; -import org.sql2o.data.Table; -import org.sql2o.data.TableResultSetIterator; -import org.sql2o.logging.LocalLoggerFactory; -import org.sql2o.logging.Logger; -import org.sql2o.quirks.Quirks; -import org.sql2o.reflection.PojoIntrospector; - import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.sql.PreparedStatement; @@ -28,6 +17,16 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import org.sql2o.converters.Converter; +import org.sql2o.converters.ConverterException; +import org.sql2o.data.LazyTable; +import org.sql2o.data.Row; +import org.sql2o.data.Table; +import org.sql2o.data.TableResultSetIterator; +import org.sql2o.logging.LocalLoggerFactory; +import org.sql2o.logging.Logger; +import org.sql2o.quirks.Quirks; +import org.sql2o.reflection.PojoIntrospector; import static org.sql2o.converters.Convert.throwIfNull; @@ -193,6 +192,7 @@ public Query addParameter(String name, Class parameterClass, T value){ final Object convertedValue = convertParameter(value); addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, convertedValue); } @@ -220,6 +220,7 @@ public Query addParameter(String name, Object value) { public Query addParameter(String name, final InputStream value){ addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -230,6 +231,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final int value){ addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -240,6 +242,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final Integer value) { addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -250,6 +253,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final long value){ addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -260,6 +264,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final Long value){ addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -270,6 +275,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final String value) { addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -280,6 +286,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final Timestamp value){ addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -290,6 +297,7 @@ public void setParameter(int paramIdx, PreparedStatement statement) throws SQLEx public Query addParameter(String name, final Time value) { addParameterInternal(name, new ParameterSetter() { + @Override public void setParameter(int paramIdx, PreparedStatement statement) throws SQLException { getConnection().getSql2o().getQuirks().setParameter(statement, paramIdx, value); } @@ -401,6 +409,7 @@ public Query bind(final Object pojo) { return this; } + @Override public void close() { if(preparedStatement != null) { connection.removeStatement(preparedStatement); @@ -556,6 +565,7 @@ private ResultSetHandlerFactory newResultSetHandlerFactory(Class retur public ResultSetIterable executeAndFetchLazy(final ResultSetHandlerFactory resultSetHandlerFactory) { final Quirks quirks = getConnection().getSql2o().getQuirks(); return new ResultSetIterableBase() { + @Override public Iterator iterator() { return new PojoResultSetIterator<>(rs, isCaseSensitive(), quirks, resultSetHandlerFactory); } @@ -577,6 +587,7 @@ public ResultSetIterable executeAndFetchLazy(final ResultSetHandler re private static ResultSetHandlerFactory newResultSetHandlerFactory(final ResultSetHandler resultSetHandler) { return new ResultSetHandlerFactory() { + @Override public ResultSetHandler newResultSetHandler(ResultSetMetaData resultSetMetaData) throws SQLException { return resultSetHandler; } @@ -623,6 +634,7 @@ public LazyTable executeAndFetchTableLazy() { final LazyTable lt = new LazyTable(); lt.setRows(new ResultSetIterableBase() { + @Override public Iterator iterator() { return new TableResultSetIterator(rs, isCaseSensitive(), getConnection().getSql2o().getQuirks(), lt); } @@ -736,6 +748,7 @@ private ResultSetHandler newScalarResultSetHandler(final Class returnT try { final Converter converter = throwIfNull(returnType, quirks.converterOf(returnType)); return new ResultSetHandler() { + @Override public T handle(ResultSet resultSet) throws SQLException { Object value = quirks.getRSVal(resultSet, 1); try { diff --git a/core/src/main/java/org/sql2o/ResultSetIterable.java b/core/src/main/java/org/sql2o/ResultSetIterable.java index e428a342..345833cf 100644 --- a/core/src/main/java/org/sql2o/ResultSetIterable.java +++ b/core/src/main/java/org/sql2o/ResultSetIterable.java @@ -10,6 +10,7 @@ */ public interface ResultSetIterable extends Iterable, Closeable, AutoCloseable { // override close to not throw + @Override void close(); boolean isAutoCloseConnection(); diff --git a/core/src/main/java/org/sql2o/ResultSetIteratorBase.java b/core/src/main/java/org/sql2o/ResultSetIteratorBase.java index 04e9e77c..6c5b2657 100644 --- a/core/src/main/java/org/sql2o/ResultSetIteratorBase.java +++ b/core/src/main/java/org/sql2o/ResultSetIteratorBase.java @@ -1,12 +1,11 @@ package org.sql2o; -import org.sql2o.quirks.Quirks; - import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Iterator; import java.util.NoSuchElementException; +import org.sql2o.quirks.Quirks; /** * Iterator for a {@link java.sql.ResultSet}. Tricky part here is getting {@link #hasNext()} @@ -37,6 +36,7 @@ public ResultSetIteratorBase(ResultSet rs, boolean isCaseSensitive, Quirks quirk private ResultSetValue next; // keep track of next item in case hasNext() is called multiple times private boolean resultSetFinished; // used to note when result set exhausted + @Override public boolean hasNext() { // check if we already fetched next item if (next != null) { @@ -62,6 +62,7 @@ public boolean hasNext() { return false; } + @Override public T next() { if (!hasNext()) { throw new NoSuchElementException(); @@ -74,6 +75,7 @@ public T next() { return result; } + @Override public void remove() { throw new UnsupportedOperationException(); } diff --git a/core/src/main/java/org/sql2o/converters/AbstractDateConverter.java b/core/src/main/java/org/sql2o/converters/AbstractDateConverter.java index 92774cb4..ca03f1d5 100644 --- a/core/src/main/java/org/sql2o/converters/AbstractDateConverter.java +++ b/core/src/main/java/org/sql2o/converters/AbstractDateConverter.java @@ -14,6 +14,7 @@ protected AbstractDateConverter(Class classOfDate) { protected abstract E fromMilliseconds(long millisecond); + @Override @SuppressWarnings("unchecked") public E convert(Object val) throws ConverterException { if (val == null){ @@ -35,6 +36,7 @@ public E convert(Object val) throws ConverterException { throw new ConverterException("Cannot convert type " + val.getClass().toString() + " to java.util.Date"); } + @Override public Object toDatabaseParam(Date val) { if(val==null) return null; return (val instanceof Timestamp) diff --git a/core/src/main/java/org/sql2o/converters/BooleanConverter.java b/core/src/main/java/org/sql2o/converters/BooleanConverter.java index 4490ed59..5344542d 100644 --- a/core/src/main/java/org/sql2o/converters/BooleanConverter.java +++ b/core/src/main/java/org/sql2o/converters/BooleanConverter.java @@ -9,6 +9,7 @@ */ public class BooleanConverter extends ConverterBase { + @Override public Boolean convert(Object val) throws ConverterException { if (val == null) return null; diff --git a/core/src/main/java/org/sql2o/converters/ByteArrayConverter.java b/core/src/main/java/org/sql2o/converters/ByteArrayConverter.java index 6edce531..654e1fd8 100644 --- a/core/src/main/java/org/sql2o/converters/ByteArrayConverter.java +++ b/core/src/main/java/org/sql2o/converters/ByteArrayConverter.java @@ -1,11 +1,10 @@ package org.sql2o.converters; -import org.sql2o.tools.IOUtils; - import java.io.IOException; import java.io.InputStream; import java.sql.Blob; import java.sql.SQLException; +import org.sql2o.tools.IOUtils; /** * User: lars @@ -14,6 +13,7 @@ */ public class ByteArrayConverter extends ConverterBase { + @Override public byte[] convert(Object val) throws ConverterException { if (val == null) return null; diff --git a/core/src/main/java/org/sql2o/converters/ConverterBase.java b/core/src/main/java/org/sql2o/converters/ConverterBase.java index 91443dcc..78175f6c 100644 --- a/core/src/main/java/org/sql2o/converters/ConverterBase.java +++ b/core/src/main/java/org/sql2o/converters/ConverterBase.java @@ -6,6 +6,7 @@ */ abstract class ConverterBase implements Converter { + @Override public Object toDatabaseParam(T val) { return val; } diff --git a/core/src/main/java/org/sql2o/converters/DefaultEnumConverterFactory.java b/core/src/main/java/org/sql2o/converters/DefaultEnumConverterFactory.java index 6e5fe4ef..72e6b5f2 100644 --- a/core/src/main/java/org/sql2o/converters/DefaultEnumConverterFactory.java +++ b/core/src/main/java/org/sql2o/converters/DefaultEnumConverterFactory.java @@ -5,8 +5,10 @@ * used by sql2o to convert a value from the database into an {@link Enum}. */ public class DefaultEnumConverterFactory implements EnumConverterFactory { + @Override public Converter newConverter(final Class enumType) { return new Converter() { + @Override @SuppressWarnings("unchecked") public E convert(Object val) throws ConverterException { if (val == null) { @@ -24,6 +26,7 @@ public E convert(Object val) throws ConverterException { throw new ConverterException("Cannot convert type '" + val.getClass().getName() + "' to an Enum"); } + @Override public Object toDatabaseParam(Enum val) { return val.name(); } diff --git a/core/src/main/java/org/sql2o/converters/InputStreamConverter.java b/core/src/main/java/org/sql2o/converters/InputStreamConverter.java index daf388cf..1be1fafb 100644 --- a/core/src/main/java/org/sql2o/converters/InputStreamConverter.java +++ b/core/src/main/java/org/sql2o/converters/InputStreamConverter.java @@ -10,6 +10,7 @@ * To change this template use File | Settings | File Templates. */ public class InputStreamConverter extends ConverterBase { + @Override public ByteArrayInputStream convert(Object val) throws ConverterException { if (val == null) return null; diff --git a/core/src/main/java/org/sql2o/converters/NumberConverter.java b/core/src/main/java/org/sql2o/converters/NumberConverter.java index a20f023f..1757300d 100644 --- a/core/src/main/java/org/sql2o/converters/NumberConverter.java +++ b/core/src/main/java/org/sql2o/converters/NumberConverter.java @@ -11,6 +11,7 @@ public NumberConverter(boolean primitive) { isPrimitive = primitive; } + @Override public V convert(Object val) { if (val == null) { return isPrimitive ? convertNumberValue(0) : null; diff --git a/core/src/main/java/org/sql2o/converters/StringConverter.java b/core/src/main/java/org/sql2o/converters/StringConverter.java index 3a23d965..f52b3454 100644 --- a/core/src/main/java/org/sql2o/converters/StringConverter.java +++ b/core/src/main/java/org/sql2o/converters/StringConverter.java @@ -1,17 +1,17 @@ package org.sql2o.converters; -import org.sql2o.tools.IOUtils; - import java.io.IOException; import java.io.Reader; import java.sql.Clob; import java.sql.SQLException; +import org.sql2o.tools.IOUtils; /** * Used by sql2o to convert a value from the database into a {@link String}. */ public class StringConverter extends ConverterBase { + @Override public String convert(Object val) throws ConverterException { if (val == null){ return null; diff --git a/core/src/main/java/org/sql2o/converters/UUIDConverter.java b/core/src/main/java/org/sql2o/converters/UUIDConverter.java index 8ad6c4c7..85f89012 100644 --- a/core/src/main/java/org/sql2o/converters/UUIDConverter.java +++ b/core/src/main/java/org/sql2o/converters/UUIDConverter.java @@ -6,6 +6,7 @@ * Used by sql2o to convert a value from the database into a {@link UUID}. */ public class UUIDConverter extends ConverterBase { + @Override public UUID convert(Object val) throws ConverterException { if (val == null){ return null; diff --git a/core/src/main/java/org/sql2o/converters/joda/DateTimeConverter.java b/core/src/main/java/org/sql2o/converters/joda/DateTimeConverter.java index da44e010..ce6c01d1 100644 --- a/core/src/main/java/org/sql2o/converters/joda/DateTimeConverter.java +++ b/core/src/main/java/org/sql2o/converters/joda/DateTimeConverter.java @@ -1,13 +1,12 @@ package org.sql2o.converters.joda; +import java.sql.Timestamp; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.LocalDateTime; import org.sql2o.converters.Converter; import org.sql2o.converters.ConverterException; -import java.sql.Timestamp; - /** * Used by sql2o to convert a value from the database into a {@link DateTime} instance. */ @@ -25,6 +24,7 @@ public DateTimeConverter() { this(DateTimeZone.getDefault()); } + @Override public DateTime convert(Object val) throws ConverterException { if (val == null){ return null; @@ -39,6 +39,7 @@ public DateTime convert(Object val) throws ConverterException { } } + @Override public Object toDatabaseParam(DateTime val) { return new Timestamp(val.getMillis()); } diff --git a/core/src/main/java/org/sql2o/converters/joda/LocalTimeConverter.java b/core/src/main/java/org/sql2o/converters/joda/LocalTimeConverter.java index 1cc4052f..15f05b30 100644 --- a/core/src/main/java/org/sql2o/converters/joda/LocalTimeConverter.java +++ b/core/src/main/java/org/sql2o/converters/joda/LocalTimeConverter.java @@ -1,16 +1,16 @@ package org.sql2o.converters.joda; +import java.sql.Timestamp; import org.joda.time.LocalTime; import org.sql2o.converters.Converter; import org.sql2o.converters.ConverterException; -import java.sql.Timestamp; - /** * Created by lars on 12/18/13. */ public class LocalTimeConverter implements Converter { + @Override public LocalTime convert(Object val) throws ConverterException { if (val == null) { return null; @@ -25,6 +25,7 @@ public LocalTime convert(Object val) throws ConverterException { } } + @Override public Object toDatabaseParam(LocalTime val) { return new Timestamp(val.toDateTimeToday().getMillis()); } diff --git a/core/src/main/java/org/sql2o/data/LazyTable.java b/core/src/main/java/org/sql2o/data/LazyTable.java index 552b05bd..f7953df5 100644 --- a/core/src/main/java/org/sql2o/data/LazyTable.java +++ b/core/src/main/java/org/sql2o/data/LazyTable.java @@ -1,8 +1,7 @@ package org.sql2o.data; -import org.sql2o.ResultSetIterable; - import java.util.List; +import org.sql2o.ResultSetIterable; /** * @author aldenquimby@gmail.com @@ -36,6 +35,7 @@ void setColumns(List columns) { this.columns = columns; } + @Override public void close() { this.rows.close(); } diff --git a/core/src/main/java/org/sql2o/logging/Slf4jLogger.java b/core/src/main/java/org/sql2o/logging/Slf4jLogger.java index 0827cb90..fab5b29f 100644 --- a/core/src/main/java/org/sql2o/logging/Slf4jLogger.java +++ b/core/src/main/java/org/sql2o/logging/Slf4jLogger.java @@ -11,18 +11,22 @@ public Slf4jLogger(org.slf4j.Logger slf4jLogger) { this.slf4jLogger = slf4jLogger; } + @Override public void debug(String format, Object[] argArray) { slf4jLogger.debug(format, argArray); } + @Override public void debug(String format, Object arg) { slf4jLogger.debug(format, arg); } + @Override public void warn(String format) { slf4jLogger.warn(format); } + @Override public void warn(String format, Throwable exception) { slf4jLogger.warn(format, exception); } diff --git a/core/src/main/java/org/sql2o/logging/SysOutLogger.java b/core/src/main/java/org/sql2o/logging/SysOutLogger.java index de5a61c6..668919ff 100644 --- a/core/src/main/java/org/sql2o/logging/SysOutLogger.java +++ b/core/src/main/java/org/sql2o/logging/SysOutLogger.java @@ -17,18 +17,22 @@ public SysOutLogger() { // this.clazz = clazz; } + @Override public void debug(String format, Object[] argArray) { // Don't log debug messages with the SysOutLogger } + @Override public void debug(String format, Object arg) { // Don't log debug messages with the SysOutLogger } + @Override public void warn(String format) { this.log(format, WARN_LVL, null); } + @Override public void warn(String format, Throwable exception) { this.log(format, WARN_LVL, exception); } diff --git a/core/src/main/java/org/sql2o/quirks/NoQuirks.java b/core/src/main/java/org/sql2o/quirks/NoQuirks.java index 5e70f4cd..b7edf592 100644 --- a/core/src/main/java/org/sql2o/quirks/NoQuirks.java +++ b/core/src/main/java/org/sql2o/quirks/NoQuirks.java @@ -1,20 +1,22 @@ package org.sql2o.quirks; -import org.sql2o.Sql2oException; -import org.sql2o.converters.Convert; -import org.sql2o.converters.Converter; -import org.sql2o.quirks.parameterparsing.impl.DefaultSqlParameterParsingStrategy; -import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy; - import java.io.InputStream; -import java.sql.*; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Time; +import java.sql.Timestamp; +import java.sql.Types; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.sql2o.converters.Convert; +import org.sql2o.converters.Converter; +import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy; +import org.sql2o.quirks.parameterparsing.impl.DefaultSqlParameterParsingStrategy; /** * @author aldenquimby@gmail.com @@ -121,6 +123,7 @@ public void setParameter(PreparedStatement statement, int paramIdx, Time value) } + @Override public void setParameter(PreparedStatement statement, int paramIdx, Boolean value) throws SQLException { if (value == null) statement.setNull(paramIdx, Types.BOOLEAN); diff --git a/core/src/main/java/org/sql2o/quirks/parameterparsing/impl/DefaultSqlParameterParsingStrategy.java b/core/src/main/java/org/sql2o/quirks/parameterparsing/impl/DefaultSqlParameterParsingStrategy.java index fbd0c543..36fb0ca7 100644 --- a/core/src/main/java/org/sql2o/quirks/parameterparsing/impl/DefaultSqlParameterParsingStrategy.java +++ b/core/src/main/java/org/sql2o/quirks/parameterparsing/impl/DefaultSqlParameterParsingStrategy.java @@ -1,11 +1,8 @@ package org.sql2o.quirks.parameterparsing.impl; -import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy; -import org.sql2o.tools.AbstractCache; - -import java.util.ArrayList; import java.util.List; import java.util.Map; +import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy; /** * Created by lars on 11.04.14. @@ -22,6 +19,7 @@ public CharParser[] getCharParsers(Map> paramMap) { }; } + @Override @SuppressWarnings("ConstantConditions") public String parseSql(String statement, Map> paramMap) { final int length = statement.length(); diff --git a/core/src/main/java/org/sql2o/reflection/FieldGetter.java b/core/src/main/java/org/sql2o/reflection/FieldGetter.java index 4e0af874..17418f4d 100644 --- a/core/src/main/java/org/sql2o/reflection/FieldGetter.java +++ b/core/src/main/java/org/sql2o/reflection/FieldGetter.java @@ -1,8 +1,7 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; - import java.lang.reflect.Field; +import org.sql2o.Sql2oException; /** * used internally to get property values directly from the field. Only used if no getter method is found. @@ -18,6 +17,7 @@ public FieldGetter(Field field) { this.field.setAccessible(true); } + @Override public Object getProperty(Object obj) { try { return this.field.get(obj); @@ -26,6 +26,7 @@ public Object getProperty(Object obj) { } } + @Override public Class getType() { return field.getType(); } diff --git a/core/src/main/java/org/sql2o/reflection/FieldSetter.java b/core/src/main/java/org/sql2o/reflection/FieldSetter.java index 31af9d97..5e08eb8a 100644 --- a/core/src/main/java/org/sql2o/reflection/FieldSetter.java +++ b/core/src/main/java/org/sql2o/reflection/FieldSetter.java @@ -1,8 +1,7 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; - import java.lang.reflect.Field; +import org.sql2o.Sql2oException; /** * used internally to set property values directly into the field. Only used if no setter method is found. @@ -16,6 +15,7 @@ public FieldSetter(Field field) { this.field.setAccessible(true); } + @Override public void setProperty(Object obj, Object value) { if (value == null && this.field.getType().isPrimitive()){ return; // dont try set null to a primitive field @@ -28,6 +28,7 @@ public void setProperty(Object obj, Object value) { } } + @Override public Class getType() { return field.getType(); } diff --git a/core/src/main/java/org/sql2o/reflection/MethodAccessorsGenerator.java b/core/src/main/java/org/sql2o/reflection/MethodAccessorsGenerator.java index 26261123..68f3fc23 100644 --- a/core/src/main/java/org/sql2o/reflection/MethodAccessorsGenerator.java +++ b/core/src/main/java/org/sql2o/reflection/MethodAccessorsGenerator.java @@ -1,14 +1,13 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; -import sun.reflect.ConstructorAccessor; -import sun.reflect.FieldAccessor; -import sun.reflect.MethodAccessor; - import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.sql2o.Sql2oException; +import sun.reflect.ConstructorAccessor; +import sun.reflect.FieldAccessor; +import sun.reflect.MethodAccessor; @SuppressWarnings("UnusedDeclaration") public class MethodAccessorsGenerator implements MethodGetterFactory, MethodSetterFactory, ObjectConstructorFactory { @@ -116,11 +115,13 @@ public static ConstructorAccessor newConstructorAccessor(Constructor bar, Cla } } + @Override public Getter newGetter(final Method method) { final Class type = method.getReturnType(); final MethodAccessor methodAccessor = newMethodAccessor(method); return new Getter() { + @Override public Object getProperty(Object obj) { try { return methodAccessor.invoke(obj, null); @@ -129,16 +130,19 @@ public Object getProperty(Object obj) { } } + @Override public Class getType() { return type; } }; } + @Override public Setter newSetter(final Method method) { final Class type = method.getParameterTypes()[0]; final MethodAccessor methodAccessor = newMethodAccessor(method); return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null && type.isPrimitive()) return; try { @@ -148,6 +152,7 @@ public void setProperty(Object obj, Object value) { } } + @Override public Class getType() { return type; } diff --git a/core/src/main/java/org/sql2o/reflection/MethodGetter.java b/core/src/main/java/org/sql2o/reflection/MethodGetter.java index 6de543f4..0db2fc6b 100644 --- a/core/src/main/java/org/sql2o/reflection/MethodGetter.java +++ b/core/src/main/java/org/sql2o/reflection/MethodGetter.java @@ -1,9 +1,8 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.sql2o.Sql2oException; /** * used internally to get property values via its getter method. @@ -21,6 +20,7 @@ public MethodGetter(Method method) { type = method.getReturnType(); } + @Override public Object getProperty(Object obj) { try { return this.method.invoke(obj); @@ -31,6 +31,7 @@ public Object getProperty(Object obj) { } } + @Override public Class getType() { return type; } diff --git a/core/src/main/java/org/sql2o/reflection/MethodSetter.java b/core/src/main/java/org/sql2o/reflection/MethodSetter.java index e2704319..0045183f 100644 --- a/core/src/main/java/org/sql2o/reflection/MethodSetter.java +++ b/core/src/main/java/org/sql2o/reflection/MethodSetter.java @@ -1,9 +1,8 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.sql2o.Sql2oException; /** * used internally to set property values via its setter method. @@ -19,6 +18,7 @@ public MethodSetter(Method method) { type = method.getParameterTypes()[0]; } + @Override public void setProperty(Object obj, Object value) { if (value == null && type.isPrimitive()){ return; // dont try to set null to a setter to a primitive type. @@ -32,6 +32,7 @@ public void setProperty(Object obj, Object value) { } } + @Override public Class getType() { return type; } diff --git a/core/src/main/java/org/sql2o/reflection/ReflectionFieldGetterFactory.java b/core/src/main/java/org/sql2o/reflection/ReflectionFieldGetterFactory.java index 0dd507a2..c330c785 100644 --- a/core/src/main/java/org/sql2o/reflection/ReflectionFieldGetterFactory.java +++ b/core/src/main/java/org/sql2o/reflection/ReflectionFieldGetterFactory.java @@ -6,6 +6,7 @@ * @author mdelapenya */ public class ReflectionFieldGetterFactory implements FieldGetterFactory { + @Override public Getter newGetter(Field field) { return new FieldGetter(field); } diff --git a/core/src/main/java/org/sql2o/reflection/ReflectionFieldSetterFactory.java b/core/src/main/java/org/sql2o/reflection/ReflectionFieldSetterFactory.java index 72454433..cd56d498 100644 --- a/core/src/main/java/org/sql2o/reflection/ReflectionFieldSetterFactory.java +++ b/core/src/main/java/org/sql2o/reflection/ReflectionFieldSetterFactory.java @@ -10,6 +10,7 @@ * To change this template use File | Settings | File Templates. */ public class ReflectionFieldSetterFactory implements FieldSetterFactory { + @Override public Setter newSetter(Field field) { return new FieldSetter(field); } diff --git a/core/src/main/java/org/sql2o/reflection/ReflectionMethodGetterFactory.java b/core/src/main/java/org/sql2o/reflection/ReflectionMethodGetterFactory.java index c2b6b1b1..bcc110ca 100644 --- a/core/src/main/java/org/sql2o/reflection/ReflectionMethodGetterFactory.java +++ b/core/src/main/java/org/sql2o/reflection/ReflectionMethodGetterFactory.java @@ -6,6 +6,7 @@ * @author mdelapenya */ public class ReflectionMethodGetterFactory implements MethodGetterFactory { + @Override public Getter newGetter(Method method) { return new MethodGetter(method); } diff --git a/core/src/main/java/org/sql2o/reflection/ReflectionMethodSetterFactory.java b/core/src/main/java/org/sql2o/reflection/ReflectionMethodSetterFactory.java index 3115228f..54d3d3ba 100644 --- a/core/src/main/java/org/sql2o/reflection/ReflectionMethodSetterFactory.java +++ b/core/src/main/java/org/sql2o/reflection/ReflectionMethodSetterFactory.java @@ -10,6 +10,7 @@ * To change this template use File | Settings | File Templates. */ public class ReflectionMethodSetterFactory implements MethodSetterFactory { + @Override public Setter newSetter(Method method) { return new MethodSetter(method); } diff --git a/core/src/main/java/org/sql2o/reflection/ReflectionObjectConstructorFactory.java b/core/src/main/java/org/sql2o/reflection/ReflectionObjectConstructorFactory.java index f9b0a8b5..73d22bef 100644 --- a/core/src/main/java/org/sql2o/reflection/ReflectionObjectConstructorFactory.java +++ b/core/src/main/java/org/sql2o/reflection/ReflectionObjectConstructorFactory.java @@ -1,16 +1,17 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; - import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import org.sql2o.Sql2oException; public class ReflectionObjectConstructorFactory implements ObjectConstructorFactory { + @Override public ObjectConstructor newConstructor(final Class clazz) { try { final Constructor ctor = clazz.getDeclaredConstructor(); ctor.setAccessible(true); return new ObjectConstructor() { + @Override public Object newInstance() { try { return ctor.newInstance((Object[])null); diff --git a/core/src/main/java/org/sql2o/reflection/UnsafeFieldGetterFactory.java b/core/src/main/java/org/sql2o/reflection/UnsafeFieldGetterFactory.java index 8897daa4..21b8d798 100644 --- a/core/src/main/java/org/sql2o/reflection/UnsafeFieldGetterFactory.java +++ b/core/src/main/java/org/sql2o/reflection/UnsafeFieldGetterFactory.java @@ -1,10 +1,9 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; -import sun.misc.Unsafe; - import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import org.sql2o.Sql2oException; +import sun.misc.Unsafe; /** * @author mdelapenya @@ -23,6 +22,7 @@ public class UnsafeFieldGetterFactory implements FieldGetterFactory, ObjectConst } } + @Override public Getter newGetter(final Field field) { final Class type = field.getType(); final boolean isStatic = Modifier.isStatic(field.getModifiers()); @@ -34,10 +34,12 @@ public Getter newGetter(final Field field) { if (!Modifier.isVolatile(field.getModifiers())) { if (type == Boolean.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getBoolean(obj, offset); } + @Override public Class getType() { return Boolean.TYPE; } @@ -46,10 +48,12 @@ public Class getType() { if (type == Character.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getChar(obj, offset); } + @Override public Class getType() { return Character.TYPE; } @@ -58,10 +62,12 @@ public Class getType() { if (type == Byte.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getByte(obj, offset); } + @Override public Class getType() { return Byte.TYPE; } @@ -70,10 +76,12 @@ public Class getType() { if (type == Short.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getShort(obj, offset); } + @Override public Class getType() { return Short.TYPE; } @@ -82,10 +90,12 @@ public Class getType() { if (type == Integer.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getInt(obj, offset); } + @Override public Class getType() { return Integer.TYPE; } @@ -94,10 +104,12 @@ public Class getType() { if (type == Long.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getLong(obj, offset); } + @Override public Class getType() { return Long.TYPE; } @@ -106,10 +118,12 @@ public Class getType() { if (type == Float.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getFloat(obj, offset); } + @Override public Class getType() { return Float.TYPE; } @@ -117,20 +131,24 @@ public Class getType() { } if (type == Double.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getDouble(obj, offset); } + @Override public Class getType() { return Double.TYPE; } }; } return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getObject(obj, offset); } + @Override public Class getType() { return type; } @@ -139,10 +157,12 @@ public Class getType() { if (type == Boolean.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getBooleanVolatile(obj, offset); } + @Override public Class getType() { return Boolean.TYPE; } @@ -150,10 +170,12 @@ public Class getType() { } if (type == Character.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getCharVolatile(obj, offset); } + @Override public Class getType() { return Character.TYPE; } @@ -161,10 +183,12 @@ public Class getType() { } if (type == Byte.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getByteVolatile(obj, offset); } + @Override public Class getType() { return Byte.TYPE; } @@ -172,10 +196,12 @@ public Class getType() { } if (type == Short.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getShortVolatile(obj, offset); } + @Override public Class getType() { return Short.TYPE; } @@ -183,10 +209,12 @@ public Class getType() { } if (type == Integer.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getIntVolatile(obj, offset); } + @Override public Class getType() { return Integer.TYPE; } @@ -194,10 +222,12 @@ public Class getType() { } if (type == Long.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getLongVolatile(obj, offset); } + @Override public Class getType() { return Long.TYPE; } @@ -205,10 +235,12 @@ public Class getType() { } if (type == Float.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getFloatVolatile(obj, offset); } + @Override public Class getType() { return Float.TYPE; } @@ -216,31 +248,37 @@ public Class getType() { } if (type == Double.TYPE) { return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getDoubleVolatile(obj, offset); } + @Override public Class getType() { return Double.TYPE; } }; } return new Getter() { + @Override public Object getProperty(Object obj) { return theUnsafe.getObjectVolatile(obj, offset); } + @Override public Class getType() { return type; } }; } + @Override public ObjectConstructor newConstructor(final Class clazz) { return getConstructor(clazz); } public static ObjectConstructor getConstructor(final Class clazz) { return new ObjectConstructor() { + @Override public Object newInstance() { try { return theUnsafe.allocateInstance(clazz); diff --git a/core/src/main/java/org/sql2o/reflection/UnsafeFieldSetterFactory.java b/core/src/main/java/org/sql2o/reflection/UnsafeFieldSetterFactory.java index c6b068c7..9d2c8a85 100644 --- a/core/src/main/java/org/sql2o/reflection/UnsafeFieldSetterFactory.java +++ b/core/src/main/java/org/sql2o/reflection/UnsafeFieldSetterFactory.java @@ -1,10 +1,9 @@ package org.sql2o.reflection; -import org.sql2o.Sql2oException; -import sun.misc.Unsafe; - import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import org.sql2o.Sql2oException; +import sun.misc.Unsafe; @SuppressWarnings("Unsafe") public class UnsafeFieldSetterFactory implements FieldSetterFactory, ObjectConstructorFactory { @@ -20,6 +19,7 @@ public class UnsafeFieldSetterFactory implements FieldSetterFactory, ObjectConst } } + @Override public Setter newSetter(final Field field) { final Class type = field.getType(); final boolean isStatic = Modifier.isStatic(field.getModifiers()); @@ -31,11 +31,13 @@ public Setter newSetter(final Field field) { if (!Modifier.isVolatile(field.getModifiers())) { if (type == Boolean.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putBoolean(obj, offset, (Boolean) value); } + @Override public Class getType() { return Boolean.TYPE; } @@ -43,11 +45,13 @@ public Class getType() { } if (type == Character.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putChar(obj, offset, (Character) value); } + @Override public Class getType() { return Character.TYPE; } @@ -55,11 +59,13 @@ public Class getType() { } if (type == Byte.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putByte(obj, offset, ((Number) value).byteValue()); } + @Override public Class getType() { return Byte.TYPE; } @@ -67,11 +73,13 @@ public Class getType() { } if (type == Short.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putShort(obj, offset, ((Number) value).shortValue()); } + @Override public Class getType() { return Short.TYPE; } @@ -79,11 +87,13 @@ public Class getType() { } if (type == Integer.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putInt(obj, offset, ((Number) value).intValue()); } + @Override public Class getType() { return Integer.TYPE; } @@ -91,11 +101,13 @@ public Class getType() { } if (type == Long.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putLong(obj, offset, ((Number) value).longValue()); } + @Override public Class getType() { return Long.TYPE; } @@ -103,11 +115,13 @@ public Class getType() { } if (type == Float.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putFloat(obj, offset, ((Number) value).floatValue()); } + @Override public Class getType() { return Float.TYPE; } @@ -115,21 +129,25 @@ public Class getType() { } if (type == Double.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putDouble(obj, offset, ((Number) value).doubleValue()); } + @Override public Class getType() { return Double.TYPE; } }; } return new Setter() { + @Override public void setProperty(Object obj, Object value) { theUnsafe.putObject(obj, offset, value); } + @Override public Class getType() { return type; } @@ -138,11 +156,13 @@ public Class getType() { if (type == Boolean.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putBooleanVolatile(obj, offset, (Boolean) value); } + @Override public Class getType() { return Boolean.TYPE; } @@ -150,11 +170,13 @@ public Class getType() { } if (type == Character.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putCharVolatile(obj, offset, (Character) value); } + @Override public Class getType() { return Character.TYPE; } @@ -162,11 +184,13 @@ public Class getType() { } if (type == Byte.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putByteVolatile(obj, offset, ((Number) value).byteValue()); } + @Override public Class getType() { return Byte.TYPE; } @@ -174,11 +198,13 @@ public Class getType() { } if (type == Short.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putShortVolatile(obj, offset, ((Number) value).shortValue()); } + @Override public Class getType() { return Short.TYPE; } @@ -186,11 +212,13 @@ public Class getType() { } if (type == Integer.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putIntVolatile(obj, offset, ((Number) value).intValue()); } + @Override public Class getType() { return Integer.TYPE; } @@ -198,11 +226,13 @@ public Class getType() { } if (type == Long.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putLongVolatile(obj, offset, ((Number) value).longValue()); } + @Override public Class getType() { return Long.TYPE; } @@ -210,11 +240,13 @@ public Class getType() { } if (type == Float.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putFloatVolatile(obj, offset, ((Number) value).floatValue()); } + @Override public Class getType() { return Float.TYPE; } @@ -222,32 +254,38 @@ public Class getType() { } if (type == Double.TYPE) { return new Setter() { + @Override public void setProperty(Object obj, Object value) { if (value == null) return; theUnsafe.putDoubleVolatile(obj, offset, ((Number) value).doubleValue()); } + @Override public Class getType() { return Double.TYPE; } }; } return new Setter() { + @Override public void setProperty(Object obj, Object value) { theUnsafe.putObjectVolatile(obj, offset, value); } + @Override public Class getType() { return type; } }; } + @Override public ObjectConstructor newConstructor(final Class clazz) { return getConstructor(clazz); } public static ObjectConstructor getConstructor(final Class clazz) { return new ObjectConstructor() { + @Override public Object newInstance() { try { return theUnsafe.allocateInstance(clazz); diff --git a/core/src/test/java/org/sql2o/Sql2oDataSourceTest.java b/core/src/test/java/org/sql2o/Sql2oDataSourceTest.java index 08982ed2..9f7beb43 100644 --- a/core/src/test/java/org/sql2o/Sql2oDataSourceTest.java +++ b/core/src/test/java/org/sql2o/Sql2oDataSourceTest.java @@ -1,11 +1,10 @@ package org.sql2o; +import java.util.List; +import javax.sql.DataSource; import junit.framework.TestCase; import org.h2.jdbcx.JdbcConnectionPool; -import javax.sql.DataSource; -import java.util.List; - /** * Created with IntelliJ IDEA. * User: lars @@ -38,6 +37,7 @@ public void testExecuteAndFetchWithNulls(){ sql2o.createQuery(sql).setName("testExecuteAndFetchWithNulls").executeUpdate(); sql2o.runInTransaction(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { Query insQuery = connection.createQuery("insert into testExecWithNullsTbl (text, aNumber, aLongNumber) values(:text, :number, :lnum)"); insQuery.addParameter("text", "some text").addParameter("number", 2).addParameter("lnum", 10L).executeUpdate(); diff --git a/core/src/test/java/org/sql2o/Sql2oTest.java b/core/src/test/java/org/sql2o/Sql2oTest.java index d59f7467..68922ceb 100644 --- a/core/src/test/java/org/sql2o/Sql2oTest.java +++ b/core/src/test/java/org/sql2o/Sql2oTest.java @@ -1,6 +1,21 @@ package org.sql2o; import com.google.common.collect.ImmutableList; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.sql.SQLException; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import javax.naming.Context; +import javax.naming.InitialContext; import org.hsqldb.jdbc.JDBCDataSource; import org.joda.time.DateTime; import org.joda.time.LocalTime; @@ -11,22 +26,25 @@ import org.sql2o.data.LazyTable; import org.sql2o.data.Row; import org.sql2o.data.Table; -import org.sql2o.pojos.*; +import org.sql2o.pojos.BigDecimalPojo; +import org.sql2o.pojos.ComplexEntity; +import org.sql2o.pojos.EntityWithPrivateFields; +import org.sql2o.pojos.StringConversionPojo; +import org.sql2o.pojos.SuperPojo; import org.sql2o.tools.IOUtils; -import javax.naming.Context; -import javax.naming.InitialContext; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.sql.SQLException; -import java.sql.Time; -import java.sql.Timestamp; -import java.util.*; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.sql2o.connectionsources.ConnectionSources.join; /** @@ -648,6 +666,7 @@ public void testRunInsideTransaction(){ try{ sql2o.runInTransaction(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { connection.createQuery("insert into runinsidetransactiontable(value) values(:value)") .addParameter("value", "test").executeUpdate(); @@ -667,6 +686,7 @@ public void run(Connection connection, Object argument) throws Throwable { assertEquals(0, rowCount); sql2o.runInTransaction(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { connection.createQuery("insert into runinsidetransactiontable(value) values(:value)") .addParameter("value", "test").executeUpdate(); @@ -680,6 +700,7 @@ public void run(Connection connection, Object argument) throws Throwable { String argument = "argument test"; sql2o.runInTransaction(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { Integer id = connection.createQuery("insert into runinsidetransactiontable(value) values(:value)") .addParameter("value", argument).executeUpdate().getKey(Integer.class); @@ -701,6 +722,7 @@ public void testRunInsideTransactionWithResult(){ private static class runnerWithResultTester implements StatementRunnableWithResult> { + @Override public List run(Connection connection, Object argument) throws Throwable { String[] vals = (String[])argument; List keys = new ArrayList(); @@ -744,6 +766,7 @@ public void testExceptionInRunnable() { try{ sql2o.runInTransaction(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { connection.createQuery("insert into testExceptionInRunnable(id, value) values(:id, :val)") .addParameter("id", 1) @@ -763,6 +786,7 @@ public void run(Connection connection, Object argument) throws Throwable { sql2o.runInTransaction(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { connection.createQuery("insert into testExceptionInRunnable(id, value) values(:id, :val)") .addParameter("id", 1) @@ -1272,6 +1296,7 @@ public void testWithConnection() { sql2o.withConnection(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { connection.createQuery(insertsql) @@ -1296,6 +1321,7 @@ public void run(Connection connection, Object argument) throws Throwable { }); List users = sql2o.withConnection(new StatementRunnableWithResult>() { + @Override public List run(Connection connection, Object argument) throws Throwable { return sql2o.createQuery("select * from User").executeAndFetch(User.class); } @@ -1305,6 +1331,7 @@ public List run(Connection connection, Object argument) throws Throwable { try{ sql2o.withConnection(new StatementRunnable() { + @Override public void run(Connection connection, Object argument) throws Throwable { connection.createQuery(insertsql) diff --git a/core/src/test/java/org/sql2o/converters/CustomUUIDConverter.java b/core/src/test/java/org/sql2o/converters/CustomUUIDConverter.java index 811fad54..d76e9a67 100644 --- a/core/src/test/java/org/sql2o/converters/CustomUUIDConverter.java +++ b/core/src/test/java/org/sql2o/converters/CustomUUIDConverter.java @@ -9,6 +9,7 @@ * @since 4/6/14 */ public class CustomUUIDConverter implements Converter { + @Override public UUID convert(Object val) throws ConverterException { if (val == null){ return null; @@ -21,6 +22,7 @@ public UUID convert(Object val) throws ConverterException { throw new ConverterException("Cannot convert type " + val.getClass() + " " + UUID.class); } + @Override public Object toDatabaseParam(UUID val) { return val.toString().replace('-', '!'); } diff --git a/core/src/test/java/org/sql2o/performance/PerformanceTestBase.java b/core/src/test/java/org/sql2o/performance/PerformanceTestBase.java index 4ba1c91d..de3a8704 100644 --- a/core/src/test/java/org/sql2o/performance/PerformanceTestBase.java +++ b/core/src/test/java/org/sql2o/performance/PerformanceTestBase.java @@ -24,6 +24,7 @@ public void initialize() public abstract void init(); public abstract void run(int input); + @Override public abstract void close(); String getName() diff --git a/core/src/test/java/org/sql2o/performance/PojoPerformanceTest.java b/core/src/test/java/org/sql2o/performance/PojoPerformanceTest.java index 4520c97f..6bee0f2f 100644 --- a/core/src/test/java/org/sql2o/performance/PojoPerformanceTest.java +++ b/core/src/test/java/org/sql2o/performance/PojoPerformanceTest.java @@ -1,6 +1,23 @@ package org.sql2o.performance; -import org.apache.commons.dbutils.*; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Collections; +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.commons.dbutils.BasicRowProcessor; +import org.apache.commons.dbutils.BeanProcessor; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; @@ -33,15 +50,6 @@ import org.sql2o.Sql2o; import org.sql2o.tools.FeatureDetector; -import java.beans.PropertyDescriptor; -import java.lang.reflect.Field; -import java.sql.*; -import java.util.Arrays; -import java.util.Collections; -import java.util.Random; -import java.util.logging.Level; -import java.util.logging.Logger; - /** * @author aldenquimby@gmail.com * @@ -257,6 +265,7 @@ class JOOQSelect extends PerformanceTestBase { ResultQuery q; + @Override public void init() { DSLContext create; @@ -349,6 +358,7 @@ public void run(int input) } } + @Override public void close() { if(stmt != null) { diff --git a/extensions/postgres/src/main/java/org/sql2o/extensions/postgres/converters/JSONConverter.java b/extensions/postgres/src/main/java/org/sql2o/extensions/postgres/converters/JSONConverter.java index 777aa897..f5052efb 100644 --- a/extensions/postgres/src/main/java/org/sql2o/extensions/postgres/converters/JSONConverter.java +++ b/extensions/postgres/src/main/java/org/sql2o/extensions/postgres/converters/JSONConverter.java @@ -3,24 +3,25 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonParser; +import java.util.Map; import org.postgresql.util.PGobject; import org.sql2o.converters.Converter; import org.sql2o.converters.ConverterException; import org.sql2o.converters.ConvertersProvider; import org.sql2o.converters.StringConverter; -import java.util.Map; - /** * User: dimzon * Date: 4/25/14 * Time: 12:08 AM */ public class JSONConverter implements Converter, ConvertersProvider { + @Override public void fill(Map, Converter> mapToFill) { mapToFill.put(JsonElement.class, this); } + @Override public JsonElement convert(Object val) throws ConverterException { if (val == null) return null; if (val instanceof JsonElement) return (JsonElement) val; @@ -38,6 +39,7 @@ public JsonElement convert(Object val) throws ConverterException { return parserHolder.parser.parse(jsonString); } + @Override public Object toDatabaseParam(JsonElement val) { if (val == null) return null; final StringBuilder stringBuilder = new StringBuilder();