Re: Proposed New Structure (starter for 10)

Troy Daniels <[email protected]> Wed, 26 Aug 2015 17:40:15 -0400
Newsgroups gmane.emacs.jdee.devel
Message-ID <CALSS3zMj70ky7pA0njP7QiO4kr4XLN4uQigtpo0qJssqt1L64Q@mail.gmail.com>
--===============7982543037273617835==
Content-Type: multipart/alternative; boundary=001a113de14e6dcf05051e3db3f0

--001a113de14e6dcf05051e3db3f0
Content-Type: text/plain; charset=UTF-8

On Wed, Aug 26, 2015 at 12:36 PM, Paul Landes <[email protected]> wrote:

> On Aug 26, 2015, at 11:19 AM, Phillip Lord <[email protected]>
> wrote:
>
> > Paul Landes <[email protected]> writes:
> >
> >> On Aug 26, 2015, at 9:25 AM, Phillip Lord <[email protected]>
> wrote:
> >>>> This is why I wanted to find a way to use the Java source itself (not
> >> the .class file with reflection/introspection) for all class
> >> generation, wizard etc code JDEE currently uses beanshell for. Clojure
> >> seems to do a good job of handling this, but I'm not sure what they do
> >> with old versions of classes for functions/files that get recompiled.
> >> That said, they're going directly for Clojure to byte code so it's a
> >> little different. I started to look at Clojure's dynamic class loader
> >> but got lost in the weeds and no documentation made it more difficult.
> >
> > Ironically, I had a quick peak at the JDEE source and discovered that it
> > actually includes a DynamicClassLoader that is supposed to reload from
> > file every time.
>
> Yes, the beanshell dynamic class loader, which loads byte codes generated
> by the ASM library.
>
>
One use case that I frequently run into is this:

Attempt to do a clean build.
Encounter an error because a.b.C does not import a.d.E.
Open C.java, do M-x jde-import-all
E is not imported, because E is built after C, and the build stopped on the
error building C, so src/a/d/E.java exists, but classes/a/d/E.class does
not.

I think we need some level of source-parsing to handle this.  Even if it
can't find a.d.E.InnerClass, something to search the source-path for E.java
would be good.

Troy

--001a113de14e6dcf05051e3db3f0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Aug 26, 2015 at 12:36 PM, Paul Landes <span dir=3D"ltr">&lt;<a =
href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"">On Aug 26=
, 2015, at 11:19 AM, Phillip Lord &lt;<a href=3D"mailto:phillip.lord@russet=
.org.uk">[email protected]</a>&gt; wrote:<br>
<br>
&gt; Paul Landes &lt;<a href=3D"mailto:[email protected]">[email protected]</=
a>&gt; writes:<br>
&gt;<br>
&gt;&gt; On Aug 26, 2015, at 9:25 AM, Phillip Lord &lt;<a href=3D"mailto:ph=
[email protected]">[email protected]</a>&gt; wrote:<br>
&gt;&gt;</span><span class=3D"">&gt;&gt; This is why I wanted to find a way=
 to use the Java source itself (not<br>
&gt;&gt; the .class file with reflection/introspection) for all class<br>
&gt;&gt; generation, wizard etc code JDEE currently uses beanshell for. Clo=
jure<br>
&gt;&gt; seems to do a good job of handling this, but I&#39;m not sure what=
 they do<br>
&gt;&gt; with old versions of classes for functions/files that get recompil=
ed.<br>
&gt;&gt; That said, they&#39;re going directly for Clojure to byte code so =
it&#39;s a<br>
&gt;&gt; little different. I started to look at Clojure&#39;s dynamic class=
 loader<br>
&gt;&gt; but got lost in the weeds and no documentation made it more diffic=
ult.<br>
&gt;<br>
&gt; Ironically, I had a quick peak at the JDEE source and discovered that =
it<br>
&gt; actually includes a DynamicClassLoader that is supposed to reload from=
<br>
&gt; file every time.<br>
<br>
</span>Yes, the beanshell dynamic class loader, which loads byte codes gene=
rated by the ASM library.<br>
<span class=3D""><br></span></blockquote><div><br></div><div>One use case t=
hat I frequently run into is this:</div><div><br></div><div>Attempt to do a=
 clean build.</div><div>Encounter an error because a.b.C does not import a.=
d.E.</div><div>Open C.java, do M-x jde-import-all</div><div>E is not import=
ed, because E is built after C, and the build stopped on the error building=
 C, so src/a/d/E.java exists, but classes/a/d/E.class does not.</div><div><=
br></div><div>I think we need some level of source-parsing to handle this.=
=C2=A0 Even if it can&#39;t find a.d.E.InnerClass, something to search the =
source-path for E.java would be good. =C2=A0</div><div><br></div><div>Troy<=
/div><div><br></div><div>=C2=A0</div></div></div></div>

--001a113de14e6dcf05051e3db3f0--


--===============7982543037273617835==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------

--===============7982543037273617835==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
jdee-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jdee-devel

--===============7982543037273617835==--