[
https://issues.apache.org/jira/browse/CASSANDRA-2936?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13092151#comment-13092151
]
Eric Evans commented on CASSANDRA-2936:
---------------------------------------
Looking at this:
It doesn't seem as if the JDBC driver uses much outside of
{{o.a.c.db.marshal}}, and what it does boils down to the simplest bits, nothing
with dependencies (aside from the odd utility method):
* {{getString(Obj)}}
* {{toString()}}
* {{isCaseSensitive()}}
* {{getScale()}}
* {{getPrecision(arg)}}
* {{isCurrency()}}
* {{isSigned()}}
* {{getJdbcType()}}
What's killing it are things like the classes used to type the comparator
members in {{AbstractType}}:
{code:style=Java}
import org.apache.cassandra.db.IColumn;
import static org.apache.cassandra.io.sstable.IndexHelper.IndexInfo;
...
public final Comparator<IndexInfo> indexComparator;
public final Comparator<IndexInfo> indexReverseComparator;
public final Comparator<IColumn> columnComparator;
public final Comparator<IColumn> columnReverseComparator;
public final Comparator<ByteBuffer> reverseComparator;
{code}
That sets up a quagmire of transitive dependencies that ends up pulling in huge
chunks of the project.
It seems like there are two approaches to fixing this, (a) making the classes
in {{o.a.c.db.marshal}} more stand-alone by separating out the problematic
parts ("somehow"), or (b) separating the pieces useful to the JDBC driver
(marshaling to/from string, signed-ness, scale, precision, etc), and reusing as
necessary from the classes in {{o.a.c.db.marshal}}.
The latter seems more palatable, if only because it is less disruptive.
> improve dependency situation between JDBC driver and Cassandra
> --------------------------------------------------------------
>
> Key: CASSANDRA-2936
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2936
> Project: Cassandra
> Issue Type: Improvement
> Components: API, Core
> Affects Versions: 0.8.1
> Reporter: Eric Evans
> Priority: Minor
> Labels: cql
>
> The JDBC jar currently depends on the {{apache-cassandra-$version}} jar,
> despite the fact that it only (directly) uses a handful of Cassandra's
> classes. In a perfect world, we'd break those classes out into their own jar
> which both the JDBC driver and Cassandra (ala
> {{apache-cassandra-$version.jar}}) could depend on. However, the classes
> used directly don't fall out to anything that makes much sense
> organizationally (short of creating a
> {{apache-cassandra-misc-$version.jar}}), and the situation only gets worse
> when you take into account all of the transitive dependencies.
> See CASSANDRA-2761 for more background, in particular
> ([this|https://issues.apache.org/jira/browse/CASSANDRA-2761?focusedCommentId=13048734&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13048734]
> and
> [this|https://issues.apache.org/jira/browse/CASSANDRA-2761?focusedCommentId=13050884&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13050884])
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira