geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Ervin" <jeer...@gmail.com>
Subject Re: Help with the Geronimo Eclipse Plugin
Date Thu, 16 Aug 2007 16:25:29 GMT
I modified the part of the processJavaProject() method that deals with
containers like so:

SharedLibEntryCreationOperation.java:
processJavaProject()
           <--- Begin code snippet --->
           if( kind == IClasspathEntry.CPE_CONTAINER )
           {
                if( entry.getPath().segment( 0 ).startsWith(
"org.eclipse.jdt.launching" ) )
                    continue;
                if( entry.getPath().segment( 0 ).startsWith(
"org.eclipse.jst." ) )
                    continue;
                if( entry.getPath().segment( 0 ).startsWith(
"org.eclipse.wst" ) )
                    continue;
//                if(
"org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER".equals(
entry.getPath().toString() ) )
//                {
                final IClasspathContainer container =
JavaCore.getClasspathContainer(entry.getPath(), javaProject);
                final IClasspathEntry[] containerEntries =
container.getClasspathEntries();
                for( int j = 0; j  < containerEntries.length; j++ )
                    addEntry( entries, resolveVarOrLibEntry(
containerEntries[ j ] ) );
//                }
            }
           <--- End Code Snippet --->

This seems to work for me.  I am checking for the JDT JRE container,
any WTP containers and then ignoring those entries.

Can anyone see any side-effects to this?

James

On 8/16/07, Shiva Kumar H R <shivahr@gmail.com> wrote:
> Looks like I won't be able to resolve this with my current code knowledge. Will dig into
this more tomorrow.
>
> - Shiva
>
>
>
> On 8/15/07, James Ervin < jeervin@gmail.com> wrote:
> > I was thinking about this and I believe the reason that the full resolved class
path is not considered is because it would include entries from both the JRE classpath container
and the Web-App Libraries classpath container.  Is this correct?  If it is, it would seem
easier to just exclude those classpath containers and then resolve the rest?
> >
> > Thanks,
> > James
> >
> >
> >
> > On 8/15/07, James Ervin < jeervin@gmail.com> wrote:
> > >  I was just following up to see if anyone saw any side effects from considering
the resolved classpath of a java project instead of just the raw classpath?
> > >
> > >
> > > Thanks,
> > > James
> > >
> > >
> > > On 8/13/07,  James Ervin <jeervin@gmail.com> wrote:
> > > >    I was looking at the method a bit and it seems as though the only classpath
container that is recognized is the maven classpath container.  Perhaps by using the resolved
classpath or by removing the if statement that checks for the maven classpath container exclusively
would be enough.  Maybe the code could be simplified by using getResolvedClasspath() since
I don' t think you would need to call a resolveVarOrLibEntry() method anymore.
> > > >
> > > > Thanks for pointer btw...  You brightened my morning....
> > > >
> > > > Thanks,
> > > > James
> > > >
> > > >
> > > >
> > > > On 8/13/07,  James Ervin < jeervin@gmail.com> wrote:
> > > > > Oh that would be awesome.... thanks.... please let me know of your
results ASAP.
> > > > >
> > > > > Thanks,
> > > > > James
> > > > >
> > > > >
> > > > >
> > > > > On 8/13/07, Shiva Kumar H R <     shivahr@gmail.com> wrote:
> > > > > > Hi James,
> > > > > > Looks like this is what you are looking for (I hit across this
by searching for "getRawClasspath" in plug-in source):
> > > > > > "processJavaProject() method of org.apache.geronimo.st.core.operations.SharedLibEntryCreationOperation.java
 in plugins/org.apache.geronimo.st.core"
> > > > > >
> > > > > > Now seeing if changing this to getResolvedClasspath (as you
suggest), would lead to any side effects.
> > > > > >
> > > > > > - Shiva
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 8/9/07,  James Ervin <jeervin@gmail.com> wrote:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 8/8/07, Tim McConnell < tim.mcconne@gmail.com>
wrote:
> > > > > > > >  Hi again James, Sorry for the delay but I've been
trying to fully understand
> > > > > > > > what you're trying to accomplish. Have you considered
using the shared lib
> > > > > > > > support that is already provided by the Geronimo plugin
publish/deploy
> > > > > > > > functionality ?? If I correctly understand what you're
trying to accomplish the
> > > > > > > > shared lib support should work for you. It's not obvious
to me though why you
> > > > > > > > are so adverse to using the built-in publish/deploy
capabilities of the plugin.
> > > > > > > > Finally, have you considered upgrading to the latest
versions of Geronimo and
> > > > > > > > the plugin ?? Geronimo 2.0 is currently being voted
on for release, and the
> > > > > > > > plugin will be voted on for release shortly thereafter.
Just curious. Thanks
> > > > > > > > much....
> > > > > > >
> > > > > > >
> > > > > > > Thanks for the reply, I actually am using a Publish Operation
to set the shared library support, so yes I am using some of that support.  The issue I am
having is the fact that when the Geronimo plugin is computing the <Project-Name>.eclipse.jar
manifest for the ${GERONIMO_HOME}/shared/lib directory, it seems to only consider the raw
classpath from the Eclipse JDT.  In other words, it appears almost as though its using  org.eclipse.jdt.core.IJavaProject.getRawClasspath()
instead of org.eclipse.jdt.core.IJavaProject.getResolvedClasspath().  I say almost, because
it will resolve Classpath Variable entries.  The net effect is that I have to hard code entries
in the .classpath file for each jar file I want in that manifest, but that is what classpath
containers are supposed to help you with.
> > > > > > >  I have considered it, but the circumstances are such that
I have to use what I am given so far.  I will look at version 2.0 and the latest from the
plugin, but that leads me to one of my earlier questions in my first post.  Where in the plugin
do I look for where it is computing the manifest for the <Project-Name>.eclipse.jar?
 I have to admit I am a bit of a newbie when it comes to EMF (I'm not sure that I hate it,
but I have yet to see what I really like about it.  The idea seems very interesting, but I
am not crazy about the results I have seen so far) and well the Geronimo Plugin source tree
seems almost as big as WTP's at this point, so any pointers would be most appreciated.
> > > > > > >
> > > > > > >
> > > > > > > Thanks,
> > > > > > > James
> > > > > > >
> > > > > > >
> > > > > > > > James Ervin wrote:
> > > > > > > > > Tim,
> > > > > > > > > Thanks for the reply.  Reviewing the plugins
installed it looks as
> > > > > > > > > though the plugin is at version 1.0.0 with the
> > > > > > > > > org.apache.geronimo.runtime.v1 plugin at version
1.0.1.  Hmm I don't see
> > > > > > > > > a feature.  I am not quite sure the version of
geronimo.  It comes
> > > > > > > > > bundled and is installed by a script so I am
not entirely sure of the
> > > > > > > > > version.  My educated guess is that it is at
version 1.2.  The version
> > > > > > > > > of WTP is 1.5.x.
> > > > > > > > >
> > > > > > > > > Its not straightforward to offer a sample app,
since I can't really
> > > > > > > > > offer up my plugin, so I will describe it.
> > > > > > > > >
> > > > > > > > > When you add a project dependency for a web app,
I noticed that the
> > > > > > > > > Geronimo Eclipse plugin will generate a jar file
in the
> > > > > > > > > ${GERONIMO_HOME}/shared/lib directory with the
name
> > > > > > > > > ${PROJECT_NAME}.eclipse.jar.  In that jar there
is a manifest that is
> > > > > > > > > pointing at the java source output directories
for the web app project
> > > > > > > > > and the output directories for any project dependencies.
 It would be
> > > > > > > > > nice to customize that, but that is just fine
for now.  The shared/lib
> > > > > > > > > directory is also where I generate a jar file
that contains a manifest
> > > > > > > > > describing the set of shared libraries that all
deployed web apps will
> > > > > > > > > share.
> > > > > > > > >
> > > > > > > > > If I add a classpath entry directly in the .classpath
file for a library
> > > > > > > > > jar dependency, it will show in the ${PROJECT_NAME}.eclipse.jar
just
> > > > > > > > > fine.  The problem comes in that I want to use
a classpath container to
> > > > > > > > > resolve library dependencies and not have to
manage entries directly in
> > > > > > > > > the .classpath file.  Even when the container
resolves down to a set of
> > > > > > > > > flat jar files, it does not matter.  It seems
that the plugin does not
> > > > > > > > > check the resolved classpath of a java project
and only checks the raw
> > > > > > > > > classpath.  Shouldn't it construct the classpath
by checking all project
> > > > > > > > > dependencies and by using the resolved, and not
raw, classpath?
> > > > > > > > >
> > > > > > > > > I am faced with a significant rewrite right now
if I cannot figure out a
> > > > > > > > > solution, any help would be really appreciated.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > James
> > > > > > > > >
> > > > > > > > > On 8/7/07, * Tim McConnell* <      tim.mcconne@gmail.com
> > > > > > > > > <mailto: tim.mcconne@gmail.com>> wrote:
> > > > > > > > >
> > > > > > > > >     Hi James, which version of Geronimo and the
Geronimo plugin are you
> > > > > > > > >     using ??
> > > > > > > > >     Also, do you have an example test app that
you could attach that
> > > > > > > > >     demonstrates
> > > > > > > > >     the failure ??
> > > > > > > > >
> > > > > > > > >     James Ervin wrote:
> > > > > > > > >      > Hello,
> > > > > > > > >      > I am a developer working on an Eclipse
plugin attempting to use
> > > > > > > > >     WTP to
> > > > > > > >        >      > help ppl write Service Based
web apps.  Why am I asking a question on
> > > > > > > > >      > the geronimo user group?  Well because
I am attempting to use Apache
> > > > > > > > >      > Geronimo as the primary J2EE container.
> > > > > > > > >      >
> > > > > > > > >      > My problem is this, I need to be able
to deploy libraries (yes I
> > > > > > > > >     know
> > > > > > > > >      > about the PublishOperation and that
I can generate a jar with a big
> > > > > > > > >      > manifest file enumerating all shared
libraries) that are only used by
> > > > > > > > >      > one particular web app or dependent
web app.  So I have a classpath
> > > > > > > > >      > container, the trouble is that the
Apache Geronimo plugin that I have
> > > > > > > > >      > access to does not seem to care about
entries in classpath
> > > > > > > > >     containers,
> > > > > > > > >      > only those that are directly enumerated
in a .classpath file (bad
> > > > > > > > >     form
> > > > > > > > >      > IMHO).
> > > > > > > > >      >
> > > > > > > > >      > I have attempted to deploy libs into
WebContent/WEB-INF/lib, but on
> > > > > > > > >      > windows WTP ( or some plugin ) keeps
the bloody file lock and
> > > > > > > > >     will not
> > > > > > > > >      > let me update or delete it.  I even
attempted to deploy the libs
> > > > > > > > >     to a
> > > > > > > > >      > separate directory and then told WTP
via a <wb-resource/> tag in
> > > > > > > > >     the WST
> > > > > > > > >      > common component configuration file
where to find it.  The lib
> > > > > > > > >     showed up
> > > > > > > > >      > in the list of WebApp Libraries, but
then when deployed to
> > > > > > > > >     Geronimo it
> > > > > > > > >      > was not recognized.
> > > > > > > > >      >
> > > > > > > > >      > I have tried this and a few other combinations.
 The only one
> > > > > > > > >     that has
> > > > > > > > >      > worked is if I create a new shared
lib entry jar (bad form since
> > > > > > > > >     not all
> > > > > > > > >      > web apps on the container will want
the given set of libraries)
> > > > > > > > >     or if I
> > > > > > > > >      > enumerate the libraries one by one
directly in the .classpath
> > > > > > > > >     (classpath
> > > > > > > > >      > containers anyone?).
> > > > > > > > >      >
> > > > > > > > >      > Is there anyway to make the plugin
respect the classpath
> > > > > > > > >     container?  Or
> > > > > > > > >      > at least give me a clue through the
bloody EMF wilderness as to
> > > > > > > > >     where in
> > > > > > > > >      > the plugin the deployment configuration
is determined so that I can
> > > > > > > > >      > consider my options (you know like
a patch...)?  I am at my wits end,
> > > > > > > > >      > any help would be most appreciated.
> > > > > > > > >      >
> > > > > > > > >      > Thanks,
> > > > > > > > >      > --
> > > > > > > > >      > James E. Ervin
> > > > > > > > >      >
> > > > > > > > >      > A human being should be able to change
a diaper, plan an invasion,
> > > > > > > > >      > butcher a hog, conn a ship, design
a building, write a sonnet,
> > > > > > > > >     balance
> > > > > > > > >      > accounts, build a wall, set a bone,
comfort the dying, take
> > > > > > > > >     orders, give
> > > > > > > > >      > orders, cooperate, act alone, solve
equations, analyze a new problem,
> > > > > > > > >      > pitch manure, program a computer, cook
a tasty meal, fight
> > > > > > > > >     efficiently,
> > > > > > > > >      > die gallantly. Specialization is for
insects.
> > > > > > > > >      > -Robert A. Heinlein
> > > > > > > > >      >
> > > > > > > > >      > Blog:       http://iacobus.blogspot.com
> > > > > > > > >
> > > > > > > > >     --
> > > > > > > > >     Thanks,
> > > > > > > > >     Tim McConnell
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > James E. Ervin, IV
> > > > > > > > >
> > > > > > > > > A human being should be able to change a diaper,
plan an invasion,
> > > > > > > > > butcher a hog, conn a ship, design a building,
write a sonnet, balance
> > > > > > > > > accounts, build a wall, set a bone, comfort the
dying, take orders, give
> > > > > > > > > orders, cooperate, act alone, solve equations,
analyze a new problem,
> > > > > > > > > pitch manure, program a computer, cook a tasty
meal, fight efficiently,
> > > > > > > > > die gallantly. Specialization is for insects.
> > > > > > > > > -Robert A. Heinlein
> > > > > > > > >
> > > > > > > > > Blog:        http://iacobus.blogspot.com
> > > > > > > >
> > > > > > > > --
> > > > > > > > Thanks,
> > > > > > > > Tim McConnell
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > James E. Ervin, IV
> > > > > > >
> > > > > > > A human being should be able to change a diaper, plan an
invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts,
build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone,
solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal,
fight efficiently, die gallantly. Specialization is for insects.
> > > > > > > -Robert A. Heinlein
> > > > > > >
> > > > > > > Blog: http://iacobus.blogspot.com
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > James E. Ervin, IV
> > > > >
> > > > > A human being should be able to change a diaper, plan an invasion,
butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall,
set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations,
analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently,
die gallantly. Specialization is for insects.
> > > > > -Robert A. Heinlein
> > > > >
> > > > > Blog: http://iacobus.blogspot.com
> > > >
> > > >
> > > >
> > > > --
> > > >
> > > > James E. Ervin, IV
> > > >
> > > > A human being should be able to change a diaper, plan an invasion, butcher
a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set
a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations,
analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently,
die gallantly. Specialization is for insects.
> > > > -Robert A. Heinlein
> > > >
> > > > Blog: http://iacobus.blogspot.com
> > >
> > >
> > >
> > > --
> > >
> > > James E. Ervin, IV
> > >
> > > A human being should be able to change a diaper, plan an invasion, butcher
a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set
a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations,
analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently,
die gallantly. Specialization is for insects.
> > > -Robert A. Heinlein
> > >
> > > Blog: http://iacobus.blogspot.com
> >
> >
> >
> > --
> >
> > James E. Ervin, IV
> >
> > A human being should be able to change a diaper, plan an invasion, butcher a hog,
conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone,
comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze
a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die
gallantly. Specialization is for insects.
> > -Robert A. Heinlein
> >
> > Blog: http://iacobus.blogspot.com
>
>



-- 
James E. Ervin, IV

A human being should be able to change a diaper, plan an invasion,
butcher a hog, conn a ship, design a building, write a sonnet, balance
accounts, build a wall, set a bone, comfort the dying, take orders,
give orders, cooperate, act alone, solve equations, analyze a new
problem, pitch manure, program a computer, cook a tasty meal, fight
efficiently, die gallantly. Specialization is for insects.
-Robert A. Heinlein

Blog: http://iacobus.blogspot.com

Mime
View raw message