<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions in java.data</title>
<link>https://ask.clojure.org/index.php/questions/contrib-libs/java-data</link>
<description></description>
<item>
<title>clojure.java.data/from-java throws stack overflow</title>
<link>https://ask.clojure.org/index.php/14379/clojure-java-data-from-java-throws-stack-overflow</link>
<description>&lt;p&gt;I use the following function to get scrollpoints from a  client io.qdrant.client.QdrantClient&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(def client ...) =&amp;gt; io.qdrant.client.QdrantClient

(defn make-scroll-points [collection-name k v]
  (builder/to-java Points$ScrollPoints
                   Points$ScrollPoints$Builder
                   (Points$ScrollPoints/newBuilder)
                   {:collectionName collection-name
                    :filter (builder/to-java Points$Filter
                                             Points$Filter$Builder
                                             (Points$Filter/newBuilder)
                                             {:addMust (ConditionFactory/matchKeyword (name k) (str v))}
                                             {})
                    :limit 1
                    :withPayload (WithPayloadSelectorFactory/enable true)}
                   {}))

(def scroll-points (qdrant/make-scroll-points  &amp;lt;collection-name&amp;gt; :user &quot;user-1&quot;))

(def scrolled (.get (.scrollAsync client scroll-points)))
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;(bean scrolled)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;works,  but when i do&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(clojure.java.data/from-java scrolled)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I get a stackoverflow error&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14379/clojure-java-data-from-java-throws-stack-overflow</guid>
<pubDate>Mon, 10 Feb 2025 10:39:57 +0000</pubDate>
</item>
<item>
<title>clojure.java.data.builder fails with overloaded setter</title>
<link>https://ask.clojure.org/index.php/14349/clojure-java-data-builder-fails-with-overloaded-setter</link>
<description>&lt;p&gt;Trying to run make-chat-model&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(ns problem.problem
  (:require [clojure.java.data.builder :as builder])
  (:import (dev.langchain4j.model.openai OpenAiChatModel)
           (dev.langchain4j.model.openai OpenAiChatModel$OpenAiChatModelBuilder)))

(defn make-chat-model []
  (builder/to-java
    OpenAiChatModel 
    OpenAiChatModel$OpenAiChatModelBuilder
    (OpenAiChatModel/builder)
    {:baseUrl  &quot;localhost&quot;
     :apiKey (System/getenv &quot;OPENAI_API_KEY&quot;)} {}))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;fails with the following error &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:#error {}
 :cause Duplicate setter found for :modelName in dev.langchain4j.model.openai.OpenAiChatModel$OpenAiChatModelBuilder class
 :via
 [{:type java.lang.IllegalArgumentException
   :message Duplicate setter found for :modelName in dev.langchain4j.model.openai.OpenAiChatModel$OpenAiChatModelBuilder class
   :at [clojure.java.data.builder$find_setters$fn__9041 invoke builder.clj 66]}]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The code is in the following repo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/gavlooth/problem&quot;&gt;https://github.com/gavlooth/problem&lt;/a&gt;&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14349/clojure-java-data-builder-fails-with-overloaded-setter</guid>
<pubDate>Wed, 22 Jan 2025 20:27:39 +0000</pubDate>
</item>
<item>
<title>Should `(clojure.java.data/from-java-deep Class {})` work?</title>
<link>https://ask.clojure.org/index.php/13581/should-clojure-java-data-from-java-deep-class-work</link>
<description>&lt;p&gt;&lt;code&gt;(clojure.java.data/from-java-deep Class {})&lt;/code&gt; throws &lt;code&gt;StackOverflowError&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The docs don't say anything about this, but I'd like to see this case covered by java.data.&lt;/p&gt;
&lt;p&gt;You can find a tiny example in &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/henrik42/java.data-with-Class/tree/master&quot;&gt;https://github.com/henrik42/java.data-with-Class/tree/master&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This shows the error.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -X main/this-call-throws
Execution error (StackOverflowError) at clojure.java.data/add-deep-getter-fn (data.clj:121).
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As a workaround I'm using &lt;code&gt;(defmethod j/from-java-deep Class [clazz _] {:class clazz})&lt;/code&gt; -- but this is not really a solution since it does not even give you what &lt;code&gt;(from-java-shallow Class {})&lt;/code&gt; would give you.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -X main/this-call-works
(j/from-java-deep Class) ;=&amp;gt;  {:class java.lang.Class}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defmethod j/from-java-deep Class [clazz _] (j/from-java-shallow Class {}))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;instead isn't much better because it's not a deep-copy either.&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13581/should-clojure-java-data-from-java-deep-class-work</guid>
<pubDate>Sun, 31 Dec 2023 11:17:16 +0000</pubDate>
</item>
<item>
<title>Please update log4j</title>
<link>https://ask.clojure.org/index.php/11383/please-update-log4j</link>
<description>&lt;p&gt;I see you've upgraded the log4j dependency in the &lt;code&gt;clojure/tools.logging&lt;/code&gt;.&lt;br&gt;
Would do the same also for the &lt;code&gt;clojure/java.data&lt;/code&gt; please? So that (among others) the &lt;code&gt;seancorfield/next-jdbc&lt;/code&gt; which plenty of projects depend on can be upgraded too?&lt;br&gt;
Thank you in advance&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11383/please-update-log4j</guid>
<pubDate>Sun, 12 Dec 2021 23:28:11 +0000</pubDate>
</item>
<item>
<title>java.data should support creating Properties from a map</title>
<link>https://ask.clojure.org/index.php/11163/java-data-should-support-creating-properties-from-a-map</link>
<description>&lt;p&gt;Some Java classes expect arguments of the type &lt;code&gt;java.util.Properties&lt;/code&gt;, for example &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/brettwooldridge/HikariCP/blob/ed2da5f1f4ef19f871fac12effc0b199706905dc/src/main/java/com/zaxxer/hikari/HikariConfig.java#L462&quot;&gt;HikariCP&lt;/a&gt;. Currently I need to construct these manually:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:dataSourceProperties
     (doto (java.util.Properties.)
       (.putAll {&quot;socketTimeout&quot; &quot;30&quot; }))}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;it would be nice if I could instead just provide a map and it got converted to Properties automatically:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:dataSourceProperties {&quot;socketTimeout&quot; &quot;30&quot; }}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Properties is a built-in JVM class used regularly to it seems fitting to have built-in support for it.&lt;/p&gt;
&lt;p&gt;Adding something like this would suffice:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defmethod j/to-java [java.util.Properties clojure.lang.APersistentMap] [_ props]
  (doto (java.util.Properties.) (.putAll props)))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11163/java-data-should-support-creating-properties-from-a-map</guid>
<pubDate>Wed, 13 Oct 2021 14:22:46 +0000</pubDate>
</item>
<item>
<title>java.util.Date should not be converted</title>
<link>https://ask.clojure.org/index.php/7183/java-util-date-should-not-be-converted</link>
<description>(from-java (java.util.Date.)) returns&lt;br /&gt;
&lt;br /&gt;
{:day 2, :date 22, :time 1548156165905, :month 0, :seconds 45, :year 119, :timezoneOffset 0, :hours 11, :minutes 22}&lt;br /&gt;
&lt;br /&gt;
but it makes more sense not to convert date objects as they are effectively primitives within Clojure. &amp;nbsp;Can submit PR for this if approved.</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7183/java-util-date-should-not-be-converted</guid>
<pubDate>Tue, 22 Jan 2019 11:24:56 +0000</pubDate>
</item>
<item>
<title>from-java on an object with Boolean attribute = false returns &quot;bad&quot; Booleans</title>
<link>https://ask.clojure.org/index.php/7184/from-java-object-boolean-attribute-false-returns-booleans</link>
<description>&lt;p&gt;Calling from-java on an object that as a Boolean attribute that is false can return boxed Booleans that are not Boolean/FALSE.&lt;br&gt;
This results in a boolean that is equal to false, but results in the true path of if.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
(def bool (:absolute (from-java (URI. &quot;&quot;))))&lt;/p&gt;
&lt;p&gt;bool &lt;br&gt;
=&amp;gt; false&lt;br&gt;
(= bool false)&lt;br&gt;
=&amp;gt; true&lt;br&gt;
(if bool true false)&lt;br&gt;
=&amp;gt; false&lt;br&gt;
&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This leads to really confusing behavior.&lt;br&gt;
As clojure won't change the behavior of if (&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.clojure.org/jira/browse/CLJ-1718&quot;&gt;https://dev.clojure.org/jira/browse/CLJ-1718&lt;/a&gt;) and we don't control the construction of the boolean, I think from-java should be aware of this problem and fix it.&lt;/p&gt;
&lt;p&gt;This could be fixed by adding an extra method for Boolean that reconstructs the Boolean in the right way, though I'm not sure what the best way would look like.&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7184/from-java-object-boolean-attribute-false-returns-booleans</guid>
<pubDate>Sun, 25 Feb 2018 15:50:29 +0000</pubDate>
</item>
<item>
<title>from-java does not convert Boolean to clojure keyword</title>
<link>https://ask.clojure.org/index.php/7182/from-java-does-not-convert-boolean-to-clojure-keyword</link>
<description>Given a class:&lt;br /&gt;
&lt;br /&gt;
public class BoolTest {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private Boolean aBoolean;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private String aString;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Boolean isABoolean() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return aBoolean;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void setABoolean(Boolean value) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.aBoolean = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public String getAString() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return aString;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void setAString(String aString) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.aString = aString;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
&lt;br /&gt;
(def example (BoolTest.))&lt;br /&gt;
&lt;br /&gt;
(defn run-test []&lt;br /&gt;
&amp;nbsp;&amp;nbsp;(do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(-&amp;gt; example&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(.setABoolean true))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(-&amp;gt; example&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(.setAString &amp;quot;something&amp;quot;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(from-java example)))&lt;br /&gt;
&lt;br /&gt;
***** Actual:&lt;br /&gt;
(test/run-test) =&amp;gt; {:AString &amp;quot;something&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
**** Expected:&lt;br /&gt;
(test/run-test) =&amp;gt; {:AString &amp;quot;something&amp;quot; :ABoolean true}</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7182/from-java-does-not-convert-boolean-to-clojure-keyword</guid>
<pubDate>Tue, 02 Jan 2018 12:39:36 +0000</pubDate>
</item>
<item>
<title>incorrect org.clojure/java.data convert java.util.Date use getter and setter</title>
<link>https://ask.clojure.org/index.php/7181/incorrect-clojure-java-data-convert-java-util-getter-setter</link>
<description>&lt;p&gt;in package org.clojure/java.data&lt;/p&gt;
&lt;p&gt;(cjd/from-java (java.util.Date.)) will use setter and getter method of java.util.Date, which produce incorrect clojure object,&lt;/p&gt;
&lt;p&gt;because java.util.Date is a basic class of java language, it's better keep &quot;::do-not-convert&quot;.&lt;/p&gt;
&lt;p&gt;so i add this class to ::do-not-convert classify.&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7181/incorrect-clojure-java-data-convert-java-util-getter-setter</guid>
<pubDate>Fri, 26 May 2017 03:15:29 +0000</pubDate>
</item>
<item>
<title>to-java not working when setter takes Map as parameter</title>
<link>https://ask.clojure.org/index.php/7180/to-java-not-working-when-setter-takes-map-as-parameter</link>
<description>&lt;p&gt;If I have the following class:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
public class ClojureTestBean {&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;private java.util.Map foo;

public void setFoo(Map foo) {
    this.foo = foo;
}

public Map getFoo() {
    return foo;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;br&gt;
&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And I run the following clojure:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
(def bean-instance (ClojureTestBean.))&lt;br&gt;
(. bean-instance setFoo {&quot;bar&quot; &quot;baz&quot;})&lt;/p&gt;
&lt;p&gt;(def bean-instance-as-map (from-java bean-instance))&lt;/p&gt;
&lt;p&gt;(def new-bean-instance (to-java ClojureTestBean bean-instance-as-map))&lt;br&gt;
&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The final line throws a {{java.lang.InstantiationException: java.util.Map}} exception (full stack trace found below).  It looks like there's a {{to-java}} method that, when it gets a {{APersistentMap}}, tries to create an instance of the type of the parameter which in this case is a {{Map}} interface, which of course cannot be instantiated.&lt;/p&gt;
&lt;p&gt;I'm wondering why the {{APersistentMap}} wouldn't be passed in directly, as it implements the {{Map}} interface?&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
CompilerException java.lang.InstantiationException: java.util.Map, compiling:(scratchpad.clj:13:24) &lt;br&gt;
java.lang.InstantiationException: java.util.Map, compiling:(scratchpad.clj:13:24)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3628)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:439)
at clojure.lang.Compiler.eval(Compiler.java:6787)
at clojure.lang.Compiler.load(Compiler.java:7227)
at user$eval1676.invoke(form-init2280240325964091253.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6782)
at clojure.lang.Compiler.eval(Compiler.java:6745)
at clojure.core$eval.invoke(core.clj:3081)
at clojure.main$repl$read_eval_print__7099$fn__7102.invoke(main.clj:240)
at clojure.main$repl$read_eval_print__7099.invoke(main.clj:240)
at clojure.main$repl$fn__7108.invoke(main.clj:258)
at clojure.main$repl.doInvoke(main.clj:258)
at clojure.lang.RestFn.invoke(RestFn.java:1523)
at clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__609.invoke(interruptible_eval.clj:53)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invoke(core.clj:630)
at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1868)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at clojure.tools.nrepl.middleware.interruptible_eval$evaluate.invoke(interruptible_eval.clj:51)
at clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__651$fn__654.invoke(interruptible_eval.clj:183)
at clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__644.invoke(interruptible_eval.clj:152)
at clojure.lang.AFn.run(AFn.java:22)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Caused by: java.lang.InstantiationException: java.util.Map&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;at java.lang.Class.newInstance(Class.java:359)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:313)
at clojure.java.data$fn__247.invoke(data.clj:95)
at clojure.lang.MultiFn.invoke(MultiFn.java:233)
at clojure.java.data$make_setter_fn$fn__232.invoke(data.clj:55)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invoke(core.clj:630)
at clojure.java.data$fn__247.invoke(data.clj:101)
at clojure.lang.MultiFn.invoke(MultiFn.java:233)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3623)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7180/to-java-not-working-when-setter-takes-map-as-parameter</guid>
<pubDate>Wed, 14 Oct 2015 14:23:44 +0000</pubDate>
</item>
<item>
<title>Translate - into camel casing in to-java</title>
<link>https://ask.clojure.org/index.php/7185/translate-into-camel-casing-in-to-java</link>
<description>&lt;p&gt;Currently, if a class has a setter like {{setMyThing}}, the hash must contain {{:myThing}} for {{to-java}} to call it.&lt;/p&gt;
&lt;p&gt;It would be great is {{:my-thing}} could be used instead as it would look less Java-ish.&lt;/p&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7185/translate-into-camel-casing-in-to-java</guid>
<pubDate>Fri, 17 Oct 2014 20:14:16 +0000</pubDate>
</item>
<item>
<title>to-java not working on some setters</title>
<link>https://ask.clojure.org/index.php/7179/to-java-not-working-on-some-setters</link>
<description>&lt;p&gt;In this example the last test fails.&lt;/p&gt;
&lt;p&gt;I have used org.codehause.mojo.rpm.Mapping(link: 1) as the example as this is where I discovered the bug.&lt;/p&gt;
&lt;p&gt;(link: 1) &lt;a rel=&quot;nofollow&quot; href=&quot;http://mojo.codehaus.org/rpm-maven-plugin/apidocs/org/codehaus/mojo/rpm/Mapping.html&quot;&gt;http://mojo.codehaus.org/rpm-maven-plugin/apidocs/org/codehaus/mojo/rpm/Mapping.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tests:&lt;/p&gt;
&lt;p&gt;(do&lt;br&gt;
  (use 'clojure.java.data&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;       'clojure.test)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  (import '(link: org.codehaus.mojo.rpm Mapping))&lt;/p&gt;
&lt;p&gt;  (testing &quot;setting normally&quot;&lt;/p&gt;
&lt;p&gt;  	(let (link: mapping (Mapping.))&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;	(.setConfiguration mapping &quot;a value&quot;)
	(.setDirectory mapping &quot;/tmp&quot;)

	(is (= (.getDirectory mapping) &quot;/tmp&quot;))
	(is (= (.getConfiguration mapping) &quot;a value&quot;))))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  (testing &quot;setting via java-data&quot;                                                                                 &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(let (link: mapping (to-java Mapping {:configuration &quot;a value&quot; :directory &quot;/tmp&quot;}))
  (is (= (.getDirectory mapping) &quot;/tmp&quot;))
  (is (= (.getConfiguration mapping) &quot;a value&quot;)))))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7179/to-java-not-working-on-some-setters</guid>
<pubDate>Wed, 09 Oct 2013 12:08:56 +0000</pubDate>
</item>
<item>
<title>Simplify use cases / split up to-java</title>
<link>https://ask.clojure.org/index.php/7178/simplify-use-cases-split-up-to-java</link>
<description>&lt;h2&gt;Issues with a single compound to-java method&lt;/h2&gt;
&lt;p&gt;The common to-java implementation for (link: Object Map), hard codes:&lt;br&gt;
  - no constructor args&lt;br&gt;
  - setters with java bean convention &lt;br&gt;
Often times, classes need special treatment during construction. E.g. if the constructor(s) take parameters, or the setters are non-standard.&lt;br&gt;
The to-java method can be specialized to achive that, however, at this point one is bound to reimplementing (or pasting) parts from java.data source, since all the helpers in java.data are private.&lt;/p&gt;
&lt;h2&gt;Proposed Enhancements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;API to call a bunch of setters a la carte&lt;/li&gt;
&lt;li&gt;a well known keyword :java.data/constructor to pass constructor args&lt;/li&gt;
&lt;li&gt;other functionality might be made public, if it's useful in its own right&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7178/simplify-use-cases-split-up-to-java</guid>
<pubDate>Tue, 03 Sep 2013 16:56:11 +0000</pubDate>
</item>
<item>
<title>Handle primitive types and arrays</title>
<link>https://ask.clojure.org/index.php/7177/handle-primitive-types-and-arrays</link>
<description>&lt;p&gt;Right now, there is no special handling for methods with primitive or array parameters.&lt;br&gt;
This results in errors, when trying to use bean classes, that have such methods, with to-java and from-java.&lt;/p&gt;
&lt;p&gt;The attached patch implements handling of primitives and arrays in the following manner:&lt;br&gt;
- When the :default methods of from-java and to-java see an array type, they extend the multimethods for that array type.&lt;br&gt;
  Issue: Is Iterable the right interface to extend the multimethod to? Sequential also came to mind, but Iterable was used elsewhere.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Values that hit a numeric primitive slot (in to-java) are manually boxed, so they aren't passed as longs.&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>java.data</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7177/handle-primitive-types-and-arrays</guid>
<pubDate>Sat, 01 Oct 2011 18:05:12 +0000</pubDate>
</item>
</channel>
</rss>