<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Lincoln,<br>
<br>
I have done some work on this over the past few days. Most of the
work was me banging my head on the wall learning Eclipse and how the
forge tools interact with it. :)<br>
<br>
But I believe that I have made significant progress. Here is the
first PR:<br>
<br>
<a class="moz-txt-link-freetext" href="https://github.com/jbosstools/jbosstools-forge/pull/139">https://github.com/jbosstools/jbosstools-forge/pull/139</a><br>
<br>
This enables the export of the Proxy interface (and other methods
within the same package). If you include code in WindupRuntimePlugin
that references these classes, you will see a compile error from the
tycho compiler's OSGI validator. That's because the previous export
didn't export the full package (including subpackages) for some
reason, and it doesn't work at runtime either.<br>
<br>
I have pushed my changes to the plugin here:<br>
<a class="moz-txt-link-freetext" href="https://github.com/windup/windup-eclipse-plugin/tree/windup2-jess">https://github.com/windup/windup-eclipse-plugin/tree/windup2-jess</a><br>
<br>
The current error is as follows:<br>
<br>
java.lang.NoClassDefFoundError:
com/tinkerpop/blueprints/util/wrappers/event/EventGraph<br>
at java.lang.Class.getDeclaredMethods0(Native Method)<br>
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)<br>
at java.lang.Class.getDeclaredMethods(Class.java:1975)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.SecurityActions.getDeclaredMethods(SecurityActions.java:30)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.getMethods(ProxyFactory.java:1121)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.getMethods(ProxyFactory.java:1096)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.makeSortedMethodList(ProxyFactory.java:803)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.computeSignature(ProxyFactory.java:810)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:398)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$3.call(ClassLoaderAdapterCallback.java:987)<br>
at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhance(ClassLoaderAdapterCallback.java:900)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhanceResult(ClassLoaderAdapterCallback.java:277)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.access$200(ClassLoaderAdapterCallback.java:37)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$2.call(ClassLoaderAdapterCallback.java:124)<br>
at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.invoke(ClassLoaderAdapterCallback.java:96)<br>
at
org.jboss.windup.graph.GraphContextFactory_$$_javassist_900cc211-7ad7-4a83-9359-b7518a7734e3.create(GraphContextFactory_$$_javassist_900cc211-7ad7-4a83-9359-b7518a7734e3.java)<br>
at
org.jboss.tools.windup.core.WindupService.generateGraph(WindupService.java:247)<br>
at
org.jboss.tools.windup.core.WindupService.generateGraph(WindupService.java:168)<br>
at
org.jboss.tools.windup.ui.internal.commands.GenerateWindupReportHandler$1.run(GenerateWindupReportHandler.java:78)<br>
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)<br>
Caused by: java.lang.ClassNotFoundException:
com.tinkerpop.blueprints.util.wrappers.event.EventGraph cannot be
found by org.jboss.tools.windup.runtime_3.1.0.Alpha2-v20150402-0253<br>
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)<br>
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)<br>
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)<br>
at
org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)<br>
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)<br>
... 22 more<br>
<br>
<br>
This one actually seems pretty clear. I think the real fix here is
to quit exposing so much to the client, but rather to expose a more
friendly API service. I will work on that soon.<br>
<br>
<br>
<br>
<div class="moz-cite-prefix">On 03/27/2015 06:21 PM, Lincoln Baxter,
III wrote:<br>
</div>
<blockquote
cite="mid:924206620.5768611.1427494918353.JavaMail.zimbra@redhat.com"
type="cite">
<div style="font-family: times new roman, new york, times, serif;
font-size: 12pt; color: #000000">
<div>Hey Ian,<br>
</div>
<div><br>
</div>
<div>I've pushed up some "work" on the Windup Eclipse Plugin.
I've simplified the dependencies, updated to Windup
2.2.0.Final, and removed dependencies that I do not believe
belong in the OSGi bundles.</div>
<div><br>
</div>
<div><a moz-do-not-send="true"
href="https://github.com/windup/windup-eclipse-plugin/tree/windup2-lincoln">https://github.com/windup/windup-eclipse-plugin/tree/windup2-lincoln</a></div>
<div><br>
</div>
<div>Unfortunately I am not an OSGi expert, and I am getting an
exception that I'm hoping you can help me with. I need to know
why this class is not being exported from the
"org.jboss.tools.forge.runtime" bundle, or why it is not being
imported where it should be. We don't have this problem with
the Forge Eclipse Plugin, so something must be different with
our imports/exports. I tried to add this manually in several
places, but to no avail. (See trace below message.)</div>
<div><br>
</div>
<div>I think that we will have more success if we are in more
constant communication about these issues. You can help with
the OSGi issues, I can help with the Furnace issues, and the
team can help add new APIs that you'll need to do your work.</div>
<div><br>
</div>
<div>My recommendation once we get this CNFE resolved (assuming
that's the last issue with what's currently in my branch,) is
that we begin building specific interfaces for use in the
Eclipse plugin and provide them via a Windup service. I also
recommend sticking entirely to interfaces where possible. That
will make this go a lot more smoothly because Furnace is
really best at proxying interfaces across the ClassLoader
boundary. Proxying concrete classes is never really safe
because you can't always guarantee a sane/proxiable
inheritance hierarchy.</div>
<div><br>
</div>
<div>What are your thoughts?</div>
<div><br>
</div>
<div>~Lincoln</div>
<div><br>
</div>
<div>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">!ENTRY org.eclipse.core.jobs 4 2 2015-03-27
17:45:55.754</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">!MESSAGE An internal error occurred during: "Generate
Windup Report".</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">!STACK 0</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="s1">org.jboss.forge.furnace.exception.ContainerException</span>:
Failed to create proxy for type [class
org.jboss.windup.graph.GraphContextFactoryImpl]</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhance(<span
class="s1">ClassLoaderAdapterCallback.java:1034</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhanceResult(<span
class="s1">ClassLoaderAdapterCallback.java:253</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.access$200(<span
class="s1">ClassLoaderAdapterCallback.java:37</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$2.call(<span
class="s1">ClassLoaderAdapterCallback.java:124</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(<span
class="s1">ClassLoaders.java:42</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.invoke(<span
class="s1">ClassLoaderAdapterCallback.java:96</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.services.Imported_$$_javassist_e21290d9-1468-4bd4-98c1-073a2776670c.get(Imported_$$_javassist_e21290d9-1468-4bd4-98c1-073a2776670c.java)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.tools.forge.core.furnace.FurnaceService.lookup(<span
class="s1">FurnaceService.java:95</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.tools.windup.core.WindupService.getServiceFromFurnace(<span
class="s1">WindupService.java:525</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.tools.windup.core.WindupService.generateGraph(<span
class="s1">WindupService.java:241</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.tools.windup.core.WindupService.generateGraph(<span
class="s1">WindupService.java:168</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.tools.windup.ui.internal.commands.GenerateWindupReportHandler$1.run(<span
class="s1">GenerateWindupReportHandler.java:78</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.eclipse.core.internal.jobs.Worker.run(<span class="s1">Worker.java:54</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">Caused by: <span class="s1">java.lang.RuntimeException</span>:
by java.lang.NoClassDefFoundError:
org/jboss/forge/furnace/proxy/javassist/util/proxy/Proxy</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass3(<span
class="s1">ProxyFactory.java:515</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass2(<span
class="s1">ProxyFactory.java:492</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass1(<span
class="s1">ProxyFactory.java:428</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass(<span
class="s1">ProxyFactory.java:400</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$3.call(<span
class="s1">ClassLoaderAdapterCallback.java:987</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(<span
class="s1">ClassLoaders.java:42</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhance(<span
class="s1">ClassLoaderAdapterCallback.java:900</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>... 12 more</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">Caused by: <span class="s1">org.jboss.forge.furnace.proxy.javassist.CannotCompileException</span>:
by java.lang.NoClassDefFoundError:
org/jboss/forge/furnace/proxy/javassist/util/proxy/Proxy</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.FactoryHelper.toClass(<span
class="s1">FactoryHelper.java:170</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass3(<span
class="s1">ProxyFactory.java:507</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>... 18 more</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">Caused by: java.lang.NoClassDefFoundError:
org/jboss/forge/furnace/proxy/javassist/util/proxy/Proxy</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
java.lang.ClassLoader.defineClass1(<span class="s1">Native
Method</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
java.lang.ClassLoader.defineClass(<span class="s1">ClassLoader.java:760</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
sun.reflect.DelegatingMethodAccessorImpl.invoke(<span
class="s1">DelegatingMethodAccessorImpl.java:43</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
java.lang.reflect.Method.invoke(<span class="s1">Method.java:483</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.FactoryHelper.toClass2(<span
class="s1">FactoryHelper.java:182</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.jboss.forge.furnace.proxy.javassist.util.proxy.FactoryHelper.toClass(<span
class="s1">FactoryHelper.java:164</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>... 19 more</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;">Caused by: <span class="s1">java.lang.ClassNotFoundException</span>:
org.jboss.forge.furnace.proxy.javassist.util.proxy.Proxy
cannot be found by
org.jboss.tools.windup.runtime_3.1.0.qualifier</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(<span
class="s1">BundleLoader.java:432</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(<span
class="s1">BundleLoader.java:345</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(<span
class="s1">BundleLoader.java:337</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(<span
class="s1">ModuleClassLoader.java:160</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>at
java.lang.ClassLoader.loadClass(<span class="s1">ClassLoader.java:357</span>)</p>
<p class="p1" style="margin: 0px;" data-mce-style="margin:
0px;"><span class="Apple-tab-span"> </span>... 26 more</p>
</div>
<div><br>
</div>
<hr id="zwchr">
<div
style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From:
</b>"Lincoln Baxter, III" <a class="moz-txt-link-rfc2396E" href="mailto:lincolnbaxter@gmail.com"><lincolnbaxter@gmail.com></a><br>
<b>To: </b>"Windup-dev List"
<a class="moz-txt-link-rfc2396E" href="mailto:windup-dev@lists.jboss.org"><windup-dev@lists.jboss.org></a><br>
<b>Cc: </b>"Lincoln Baxter, III" <a class="moz-txt-link-rfc2396E" href="mailto:lincoln@redhat.com"><lincoln@redhat.com></a>,
"George Gastaldi" <a class="moz-txt-link-rfc2396E" href="mailto:ggastald@redhat.com"><ggastald@redhat.com></a><br>
<b>Sent: </b>Friday, March 27, 2015 12:13:03 PM<br>
<b>Subject: </b>Re: [windup-dev] Furnace not finding Windup
FileService<br>
<div><br>
</div>
<div dir="ltr">Ah, well one issue is that the "*ModelServices"
like FileService are not actually Furnace services.. That's
unfortunate... Do you need access to the FileService?</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Mar 25, 2015 at 12:33 PM,
Ian Tewksbury <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:itewk@redhat.com"
target="_blank">itewk@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div
style="font-family:Arial;font-size:12pt;color:#000000">
<div>Lincoln,</div>
<div><br>
</div>
<div>Sorry. I just saw this. My email filters took
over when you added the windup mailing list and it
got filtered out of my main inbox.</div>
<div><br>
</div>
<div>The Furnace method I added was:<br>
</div>
<div><br>
</div>
<div><span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
public <S> S lookupType(Class<S>
service) {</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
S instance = null;</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
if (furnace != null) {</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
Set<Class<S>> types = null;</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
types =
furnace.getAddonRegistry().getExportedTypes(service);</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
if (types != null &&
!types.isEmpty()) {</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
for(Class<S> type : types) {</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
try {</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
instance = type.newInstance();</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
break;</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
} catch (Exception e) {</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
e.getMessage();</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
//skip to next instance if this
one did not work</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
}</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
}</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
}</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
}</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif">
return instance;</span><br>
<span style="font-family:courier
new,courier,monaco,monospace,sans-serif"> }</span></div>
<div><br>
</div>
<div>My issue was with loading "FileService.class".
Calling "lookup" could not find it, but calling my
new "lookupType" it could find it.<br>
</div>
<div><br>
</div>
<div>Blue Skies,</div>
<div>~Ian<br>
</div>
<div><br>
</div>
<hr>
<div
style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From:
</b>"Lincoln Baxter, III" <<a
moz-do-not-send="true"
href="mailto:lincoln@redhat.com" target="_blank">lincoln@redhat.com</a>><br>
<b>To: </b>"Ian Tewksbury" <<a
moz-do-not-send="true"
href="mailto:itewk@redhat.com" target="_blank">itewk@redhat.com</a>><br>
<b>Cc: </b>"Robb Greathouse" <<a
moz-do-not-send="true"
href="mailto:robb.greathouse@redhat.com"
target="_blank">robb.greathouse@redhat.com</a>>,
"George Gastaldi" <<a moz-do-not-send="true"
href="mailto:ggastald@redhat.com"
target="_blank">ggastald@redhat.com</a>>,
"Windup-dev List" <<a moz-do-not-send="true"
href="mailto:windup-dev@lists.jboss.org"
target="_blank">windup-dev@lists.jboss.org</a>><br>
<b>Sent: </b>Monday, March 23, 2015 10:23:09 AM
<div>
<div class="h5"><br>
<b>Subject: </b>Re: Furnace not finding
Windup FileService<br>
<div><br>
</div>
<div style="font-family:times new roman,new
york,times,serif;font-size:12pt;color:#000000">
<div>Hey Ian,</div>
<div><br>
</div>
<div>(Adding windup-dev.)</div>
<div><br>
</div>
<div>I'm not really sure what this issue
could be, but it worries me that you
needed to add a method to FurnaceService.
What did you add? You can't ask Furnace
for an instance of a type that is not a
Service. (It wouldn't know how to
construct it.)</div>
<div><br>
</div>
<div>The last error you received worries me
specifically because it makes me think
that there is something funky going on
with the ClassLoader hierarchy itself, and
that is never good; however, it could be
due to some kind of quirk with what you
added (it also may be a bug), so I think I
need to see what you are doing.</div>
<div><br>
</div>
<div>Could you show me where this code is so
that I can take a look?</div>
<div><br>
</div>
<div>Thanks!</div>
<div>~Lincoln</div>
<div><br>
</div>
<hr>
<div
style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From:
</b>"Ian Tewksbury" <<a
moz-do-not-send="true"
href="mailto:itewk@redhat.com"
target="_blank">itewk@redhat.com</a>><br>
<b>To: </b>"Lincoln Baxter" <<a
moz-do-not-send="true"
href="mailto:lbaxter@redhat.com"
target="_blank">lbaxter@redhat.com</a>><br>
<b>Cc: </b>"Robb Greathouse" <<a
moz-do-not-send="true"
href="mailto:robb.greathouse@redhat.com"
target="_blank">robb.greathouse@redhat.com</a>><br>
<b>Sent: </b>Sunday, March 22, 2015
9:57:36 PM<br>
<b>Subject: </b>Re: Furnace not finding
Windup FileService<br>
<div><br>
</div>
<div
style="font-family:Arial;font-size:12pt;color:#000000">
<div>Licoln,<br>
</div>
<div><br>
</div>
<div>Got passed those previous errors.
New error now:</div>
<div><br>
</div>
<div>
<p style="margin:0px"><span
style="font-family:'courier
new',courier,monaco,monospace,sans-serif">!ENTRY
<a moz-do-not-send="true"
href="http://org.eclipse.core.jobs"
target="_blank">org.eclipse.core.jobs</a>
4 2 2015-03-22 21:52:59.403</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">!MESSAGE
An internal error occurred during:
"Validating".</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">!STACK
0</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">java.lang.LinkageError:
loader constraint violation:
loader (instance of
org/jboss/tools/forge/core/internal/furnace/CompositeFurnaceClassLoader)
previously initiated loading for a
different type with name
"org/jboss/forge/furnace/util/Predicate"</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
java.lang.Class.getDeclaredMethods0(Native
Method)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
java.lang.Class.privateGetDeclaredMethods(Class.java:2615)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
java.lang.Class.getDeclaredMethods(Class.java:1860)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.SecurityActions.getDeclaredMethods(SecurityActions.java:30)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.RuntimeSupport.findMethod2(RuntimeSupport.java:134)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.RuntimeSupport.findMethod(RuntimeSupport.java:65)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.RuntimeSupport.find2Methods(RuntimeSupport.java:53)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.windup.exec.configuration.WindupConfiguration_$$_javassist_5effd6de-6f27-4c9d-9f94-b9492b06844c.<clinit>(WindupConfiguration_$$_javassist_5effd6de-6f27-4c9d-9f94-b9492b06844c.java)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
sun.misc.Unsafe.ensureClassInitialized(Native
Method)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:140)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
java.lang.reflect.Field.acquireFieldAccessor(Field.java:1057)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
java.lang.reflect.Field.getFieldAccessor(Field.java:1038)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
java.lang.reflect.Field.set(Field.java:741)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.setField(ProxyFactory.java:525)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:508)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:492)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:428)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:400)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$3.call(ClassLoaderAdapterCallback.java:987)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhance(ClassLoaderAdapterCallback.java:900)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhanceResult(ClassLoaderAdapterCallback.java:253)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.access$200(ClassLoaderAdapterCallback.java:37)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$2.call(ClassLoaderAdapterCallback.java:124)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.invoke(ClassLoaderAdapterCallback.java:96)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.forge.furnace.services.Imported_$$_javassist_34707ba1-98fb-4b8a-93ed-559398be971b.get(Imported_$$_javassist_34707ba1-98fb-4b8a-93ed-559398be971b.java)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.tools.forge.core.furnace.FurnaceService.lookup(FurnaceService.java:96)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.tools.windup.core.WindupService.getServiceFromFurnace(WindupService.java:485)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.tools.windup.core.WindupService.generateGraph(WindupService.java:226)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.tools.windup.core.WindupService.getGraph(WindupService.java:301)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.tools.windup.core.WindupService.getInlineHints(WindupService.java:103)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.jboss.tools.windup.core.internal.validators.WindupValidator.validate(WindupValidator.java:81)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1159)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:810)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.internal.ValidationRunner.execute(ValidationRunner.java:134)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.internal.ValidationRunner.validate(ValidationRunner.java:68)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.wst.validation.ui.internal.ManualValidationRunner.runInWorkspace(ManualValidationRunner.java:83)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)</span><br>
<span style="font-family:'courier
new',courier,monaco,monospace,sans-serif">
at
org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)</span></p>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Blue Skies,</div>
<div>~Ian</div>
<div><br>
</div>
<hr>
<div
style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From:
</b>"Ian Tewksbury" <<a
moz-do-not-send="true"
href="mailto:itewk@redhat.com"
target="_blank">itewk@redhat.com</a>><br>
<b>To: </b>"Lincoln Baxter" <<a
moz-do-not-send="true"
href="mailto:lbaxter@redhat.com"
target="_blank">lbaxter@redhat.com</a>><br>
<b>Cc: </b>"Robb Greathouse" <<a
moz-do-not-send="true"
href="mailto:robb.greathouse@redhat.com"
target="_blank">robb.greathouse@redhat.com</a>><br>
<b>Sent: </b>Sunday, March 22, 2015
7:49:28 PM<br>
<b>Subject: </b>Re: Furnace not
finding Windup FileService<br>
<div><br>
</div>
<div
style="font-family:Arial;font-size:12pt;color:#000000">
<div>Licncoln,</div>
<div><br>
</div>
<div>I added some new API to the
FurnaceService to be able to
lookup a type which got me passed
the below errors.</div>
<div><br>
</div>
<div>Now I am running into:</div>
<div><br>
</div>
<div>
<p style="margin:0px">java.lang.NoClassDefFoundError:
com/tinkerpop/frames/FramedGraph<br>
at
java.lang.Class.getDeclaredMethods0(Native
Method)<br>
at
java.lang.Class.privateGetDeclaredMethods(Class.java:2615)<br>
at
java.lang.Class.getDeclaredMethods(Class.java:1860)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.SecurityActions.getDeclaredMethods(SecurityActions.java:30)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.getMethods(ProxyFactory.java:1121)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.getMethods(ProxyFactory.java:1096)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.makeSortedMethodList(ProxyFactory.java:803)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.computeSignature(ProxyFactory.java:810)<br>
at
org.jboss.forge.furnace.proxy.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:398)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$3.call(ClassLoaderAdapterCallback.java:987)<br>
at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhance(ClassLoaderAdapterCallback.java:900)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.enhanceResult(ClassLoaderAdapterCallback.java:277)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.access$200(ClassLoaderAdapterCallback.java:37)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$2.call(ClassLoaderAdapterCallback.java:124)<br>
at
org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)<br>
at
org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.invoke(ClassLoaderAdapterCallback.java:96)<br>
at
org.jboss.windup.graph.GraphContextFactory_$$_javassist_2a504b60-d6e3-450e-87b5-f41eb849ab81.create(GraphContextFactory_$$_javassist_2a504b60-d6e3-450e-87b5-f41eb849ab81.java)<br>
at
org.jboss.tools.windup.core.WindupService.generateGraph(WindupService.java:235)<br>
at
org.jboss.tools.windup.core.WindupService.getGraph(WindupService.java:303)<br>
at
org.jboss.tools.windup.core.WindupService.getInlineHints(WindupService.java:103)<br>
at
org.jboss.tools.windup.core.internal.validators.WindupValidator.validate(WindupValidator.java:81)<br>
at
org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1159)<br>
at
org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)<br>
at
org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)<br>
at
org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:810)<br>
at
org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)<br>
at
org.eclipse.wst.validation.internal.ValidationRunner.execute(ValidationRunner.java:134)<br>
</p>
<p style="margin:0px">at
org.eclipse.wst.validation.internal.ValidationRunner.validate(ValidationRunner.java:68)<br>
at
org.eclipse.wst.validation.ui.internal.ManualValidationRunner.runInWorkspace(ManualValidationRunner.java:83)<br>
at
org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)<br>
at
org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)<br>
Caused by:
java.lang.ClassNotFoundException:
com.tinkerpop.frames.FramedGraph
cannot be found by
org.jboss.tools.windup.runtime_3.1.0.qualifier<br>
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)<br>
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)<br>
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)<br>
at
org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)<br>
at
java.lang.ClassLoader.loadClass(ClassLoader.java:358)<br>
... 32 more</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">I have
verified that the Furnace add on
'org-jboss-windup-graph-windup-graph'
is being loaded and contains the
windup-frames JAR so I am not
clear why furnace is not able to
load the class.</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">Ideas?</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">Blue Skies,</p>
<p style="margin:0px">~Ian</p>
</div>
<div><br>
</div>
<hr>
<div
style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From:
</b>"Ian Tewksbury" <<a
moz-do-not-send="true"
href="mailto:itewk@redhat.com"
target="_blank">itewk@redhat.com</a>><br>
<b>To: </b>"Lincoln Baxter" <<a
moz-do-not-send="true"
href="mailto:lbaxter@redhat.com"
target="_blank">lbaxter@redhat.com</a>><br>
<b>Cc: </b>"Robb Greathouse" <<a
moz-do-not-send="true"
href="mailto:robb.greathouse@redhat.com"
target="_blank">robb.greathouse@redhat.com</a>><br>
<b>Sent: </b>Sunday, March 22,
2015 5:18:55 AM<br>
<b>Subject: </b>Re: Furnace not
finding Windup FileService<br>
<div><br>
</div>
<div
style="font-family:Arial;font-size:12pt;color:#000000">
<div>Lioncoln,<br>
</div>
<div><br>
</div>
<div>Looking here, <a
moz-do-not-send="true"
href="http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/org.jboss.forge.furnace.container/cdi-impl/2.10.1.Final/org/jboss/forge/furnace/container/cdi/impl/WeldServiceRegistry.java#WeldServiceRegistry.getExportedInstances%28java.lang.Class%29"
target="_blank">http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/org.jboss.forge.furnace.container/cdi-impl/2.10.1.Final/org/jboss/forge/furnace/container/cdi/impl/WeldServiceRegistry.java#WeldServiceRegistry.getExportedInstances%28java.lang.Class%29</a>, and
debuging through eclipse
without source, I have figured
out it is choking on like 189.
It appears this
#getExportedInstances method
is only for loading beans. I
see a #getExportedType which
is what I am guessing I need,
but the only Furnace API I see
is FurnaceService.INSTANCE.lookup(clazz)
which ends up doing this bean
lookup rather then a type
lookup. Am I missing something
here? Is there just missing
API to look up a type and not
a bean via Furnace?</div>
<div><br>
</div>
<div>Blue Skies,</div>
<div>~Ian</div>
<div><br>
</div>
<hr>
<div
style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From:
</b>"Ian Tewksbury" <<a
moz-do-not-send="true"
href="mailto:itewk@redhat.com"
target="_blank">itewk@redhat.com</a>><br>
<b>To: </b>"Lincoln Baxter"
<<a moz-do-not-send="true"
href="mailto:lbaxter@redhat.com" target="_blank">lbaxter@redhat.com</a>>,
"Robb Greathouse" <<a
moz-do-not-send="true"
href="mailto:robb.greathouse@redhat.com"
target="_blank">robb.greathouse@redhat.com</a>><br>
<b>Sent: </b>Sunday, March
22, 2015 4:57:43 AM<br>
<b>Subject: </b>Furnace not
finding Windup FileService<br>
<div><br>
</div>
<div
style="font-family:Arial;font-size:12pt;color:#000000">
<div>Lincoln,</div>
<div><br>
</div>
<div>I can not figure out
why Furnance is reporting
that it can not find the
Windup FileService despite
the fact that it is
reporting it loaded the
graph-api addon. Any
ideas?</div>
<div><br>
</div>
<div>Please see attached for
the log. It clearly shows
the graph-api addon being
loaded. And I have
verified that addon
contains the graph-api.jar
which contains the
FileService. I have tried
to debug the furnace stuff
but I keep running into
source not found issues
and getting lost. I have
been able to tell that
ImportedImpl#getExportedInstances
is getting called and it
is looping over the
graph-api addon. But it
does not seem to find the
class in there, but I have
not been able to debug
into furnace beyond that
point.</div>
<div><br>
</div>
<div>Looking at the variable
state the
WeldServiceRegistery
instance for the graph-api
addon shows the
FIleService there. For
some reason it is just not
being retrevied. I have
attached a screenshoot of
the variable state from
within ImportedImpl#getExportedInstances.
Can you think of any
reason serviceRegistry.getExportedInstances(type)
would be failing giving
all of this?</div>
<div><br>
</div>
<div><img
src="cid:part22.06000005.09040005@redhat.com"></div>
<div><br>
</div>
<div>~Ian</div>
</div>
</div>
<div><br>
</div>
</div>
</div>
<div><br>
</div>
</div>
</div>
<div><br>
</div>
</div>
</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
<div><br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
windup-dev mailing list<br>
<a moz-do-not-send="true"
href="mailto:windup-dev@lists.jboss.org"
target="_blank">windup-dev@lists.jboss.org</a><br>
<a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/windup-dev"
target="_blank">https://lists.jboss.org/mailman/listinfo/windup-dev</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail_signature">Lincoln Baxter, III<br>
<a moz-do-not-send="true" href="http://ocpsoft.org"
target="_blank">http://ocpsoft.org</a><br>
"Simpler is better."</div>
</div>
</div>
<div><br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
windup-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:windup-dev@lists.jboss.org">windup-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/windup-dev">https://lists.jboss.org/mailman/listinfo/windup-dev</a></pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Calendar Free/Busy: <a class="moz-txt-link-freetext" href="https://www.google.com/calendar/embed?src=jsightle%40redhat.com&ctz=America/New_York">https://www.google.com/calendar/embed?src=jsightle%40redhat.com&ctz=America/New_York</a></pre>
</body>
</html>