It's all about the answers!

Ask a question

Jazz Java APIs for stand alone application


Ahmed Hadad (10687) | asked Apr 07 '08, 4:34 p.m.
Are there Jazz Java APIs that can be used in an application that does not
run as a plugin of the Jazz platform?

I am implementing the connector for an application that provides data
migration functionalities. In my case I need to implement the connector for
the Jazz platform.

Are there APIs that will allow my application to do login, logout, workitem
extract and workitem modification kind of function from an external
application?

--
Sincerely,

Ahmed Hadad
IBM STG

6 answers



permanent link
Kai-Uwe Maetzel (85611) | answered Apr 07 '08, 6:33 p.m.
JAZZ DEVELOPER
This is possible. All common and client-library plugins can be used as
normal jars in plain java. A plain java program would roughly look like
this:

public static void main(String[] args) {
try {
TeamPlatform.startup();
ITeamRepositoryService svc=TeamPlatform.getTeamRepositoryService();
ITeamRepository repo = svc.getTeamRepository(REPOSITORY_URI);
repo.registerLoginHandler(new ITeamRepository.ILoginHandler() {
public ILoginInfo challenge(ITeamRepository repository) {
return new ILoginInfo() {
public String getUserId() {
return USER_ID;
}
public String getPassword() {
return PASSWORD;
}
};
}
});
repo.login(new NullProgressMonitor());
try {

TheServiceYouNeed service =
(TheServiceYouNeed) repo
.getClientLibrary(TheServiceYouNeed.class);
doYourStuff(service);

} finally {
if (repo.loggedIn()) {
repo.logout();
}
}

} catch (TeamRepositoryException x) {
handleException(x);
} finally {
if (TeamPlatform.isStarted()) {
TeamPlatform.shutdown();
}
}
}


Kai
Jazz Process team



Ahmed Hadad (IBM) wrote:
Are there Jazz Java APIs that can be used in an application that does
not run as a plugin of the Jazz platform?

I am implementing the connector for an application that provides data
migration functionalities. In my case I need to implement the connector
for the Jazz platform.

Are there APIs that will allow my application to do login, logout,
workitem extract and workitem modification kind of function from an
external application?

permanent link
Kai Nehring (3116) | answered Apr 09 '08, 3:26 p.m.
Hi,

I've tried to execute the code, but unfortunately TeamPlatform.startup() fails:

Exception in thread "main" java.lang.NoClassDefFoundError: com.ibm.team.repository.common.internal.util.InternalTeamPlatform (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:130)
at com.ibm.team.repository.client.TeamPlatform.isStarted(TeamPlatform.java:72)
at ca.ucalgary.jazz.connection.prototype.one.Connector.main(Connector.java:50)
Caused by: java.lang.NoClassDefFoundError: org.apache.log4j.Logger
at com.ibm.team.repository.common.internal.util.InternalTeamPlatform.<clinit>(InternalTeamPlatform.java:38)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:192)
at com.ibm.team.repository.client.TeamPlatform.startup(TeamPlatform.java:47)
at ca.ucalgary.jazz.connection.prototype.one.Connector.main(Connector.java:16)



It fails during the client-initializing process... (startup() in TeamPlatform.class)


Referenced Libraries:

com.ibm.team.repository.common
com.ibm.team.repository.client
org.eclipse.equinox.common
org.eclipse.equinox.registry
com.ibm.team.repository.common.remoteaccess


What went wrong?

Thanks in advance,
Kai

permanent link
Don Weinand (7851) | answered Apr 09 '08, 5:22 p.m.
JAZZ DEVELOPER
A large number of jars will be required on your class path to use Jazz from
a plain java client. There is currently no pre-packaged plain Java SDK zip
available that I'm aware of. Our component executes the Jazz ant tasks in a
plain java context. To give you an idea of how many jars may be required
depending on what you are doing...take a look in your
jazz\buildsystem\buildtoolkit directory. As you'll see there are a large
number needed to allow our ant tasks to resolve all class references they
use. I'm am NOT recommending you use that directory for your class path
entries. We only include the jars necessary for our ant tasks to execute
successfully. You may need more or less and we freely change the directly
to suit our needs so don't create a dependency on it. I'm only presenting
it as an example.

From your exception it looks like you are missing the log4j-1.2.12.jar but I
imagine you'll be missing others as well.

Don Weinand
Jazz Team Build


"kainehring" <kai.nehring@vgsoft-dot-de.no-spam.invalid> wrote in message
news:ftj5bs$fva$1@localhost.localdomain...
Hi,

I've tried to execute the code, but unfortunately
TeamPlatform.startup() fails:

Exception in thread "main" java.lang.NoClassDefFoundError:
com.ibm.team.repository.common.internal.util.InternalTeamPlatform
(initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:130)
at
com.ibm.team.repository.client.TeamPlatform.isStarted(TeamPlatform.java:72)
at
ca.ucalgary.jazz.connection.prototype.one.Connector.main(Connector.java:50)
Caused by: java.lang.NoClassDefFoundError: org.apache.log4j.Logger
at
com.ibm.team.repository.common.internal.util.InternalTeamPlatform.<clinit>(InternalTeamPlatform.java:38)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:192)
at
com.ibm.team.repository.client.TeamPlatform.startup(TeamPlatform.java:47)
at
ca.ucalgary.jazz.connection.prototype.one.Connector.main(Connector.java:16)



It fails during the client-initializing process... (startup() in
TeamPlatform.class)


Referenced Libraries:

com.ibm.team.repository.common
com.ibm.team.repository.client
org.eclipse.equinox.common
org.eclipse.equinox.registry
com.ibm.team.repository.common.remoteaccess


What went wrong?

Thanks in advise,
Kai

permanent link
Christophe Elek (2.9k12921) | answered Apr 10 '08, 10:03 a.m.
JAZZ DEVELOPER
"Donald Weinand" <dmweinan@us.ibm.com> wrote in
news:ftjc57$jma$1@localhost.localdomain:

A large number of jars will be required on your class path to use Jazz
from a plain java client.

As FYI, I managed to run the basic code (not calling any services) using
the following JAR.
You may need more JAR than that, but at least the code Kai sent us will
run...


org.eclipse.equinox.common_3.3.0.v20070426.jar
org.eclipse.equinox.registry_3.3.1.R33x_v20070802.jar
log4j-1.2.12.jar
org.eclipse.osgi_3.3.1.R33x_v20070828.jar
org.apache.commons.logging_1.0.4.v200706111724.jar
org.eclipse.core.jobs_3.3.1.R33x_v20070709.jar
commons-httpclient-3.0.jar
org.eclipse.emf.ecore_2.3.1.v200709252135.jar
org.eclipse.emf.ecore.sdo_2.3.0.v200709252135.jar
org.eclipse.emf.ecore.xmi_2.3.1.v200709252135.jar
org.eclipse.emf.common_2.3.0.v200709252135.jar
org.eclipse.emf.ecore.change_2.3.0.v200709252135.jar
org.eclipse.emf.commonj.sdo_2.3.0.v200709252135.jar
commons-codec-1.3.jar
com.ibm.team.repository.client_0.6.0.I20080404-1743.jar
com.ibm.team.repository.common_0.6.0.I20080404-1743.jar
com.ibm.team.repository.common.json_0.6.0.I20080404-1743.jar
com.ibm.team.repository.common.serialize_0.6.0.I20080404-1743.jar
com.ibm.team.repository.common.transport_0.6.0.I20080404-1743.jar
com.ibm.team.repository.common.remoteaccess_0.6.0.I20080404-1743.jar
com.ibm.team.repository.common.remoteaccess.auth_0.6.0.I20080404-1743.jar

--
Christophe Elek
Serviceability Architect
IBM Software Group - Rational

permanent link
Todd Lainhart (40611) | answered Apr 16 '08, 3:30 p.m.
FORUM MODERATOR / JAZZ DEVELOPER
Ahmed Hadad (IBM) wrote:
Are there Jazz Java APIs that can be used in an application that does
not run as a plugin of the Jazz platform?

I am implementing the connector for an application that provides data
migration functionalities. In my case I need to implement the connector
for the Jazz platform.

Are there APIs that will allow my application to do login, logout,
workitem extract and workitem modification kind of function from an
external application?


There are REST services available for reading WorkItems, that are
programmatically accessible via java.net.HttpURLConnection (e.g.). No
modifications to workitems are available at this time.

If you're using a secured connection to your server, the biggest
challenge will be dealing with the proprietary form-based auth, but the
code for dealing with that is isolated in a single (small) plugin.

-- Todd (Jazz Team)

permanent link
Ying Chen (261) | answered May 29 '08, 10:23 a.m.
JAZZ DEVELOPER
Can you explain more about how to use the REST services for reading WorkItems - if building a customized client? How does authentication work in this scenario ?

Your answer


Register or to post your answer.