Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Connect to a Jazz-Service from another program

Hi,

I would like to access the Jazz-Repository from outside, means from another program. Currently I want to connect to the "JazzTalk" service, using an own jUnit-Test (just for testing purposes). I created a Java-Project (not Plugin-Project!) and used the JazzLoginTestCase.java as a skeleton. The unit-tests fails with a runtime exception: "No Server Container Descriptors were found on the classpath. Please check that the Jetty bundles are included in your launch or packaging."

package ca.ucalgary.jazzconnect.test;

import junit.framework.*;

import com.ibm.team.repository.client.ITeamRepository;
import com.ibm.team.repository.client.TeamPlatform;
import com.ibm.team.repository.common.TeamRepositoryException;

public class JazzLoginTestCase extends TestCase {

private ITeamRepository repo;

protected void setUp() throws Exception {
super.setUp();

if (!TeamPlatform.isStarted())
TeamPlatform.startup();

repo = login();
}

@SuppressWarnings("deprecation")
protected void tearDown() throws Exception {
repo.logout(null);
assertFalse(repo.loggedIn());
repo = null;

super.tearDown();
}

//********************************************************************************
// own test-code
//********************************************************************************

public void testLogin() {

// replace with a real test case in the future...
assertTrue(true);

}


//********************************************************************************
/**
* The URI scheme <code>"local:"</code> creates a Jazz server on the same
* thread as the client. Use <code>http://localhost:9080/jazz</code> for
* remote mode testing.
*/
private static final String REPOSITORY_URI = "local:";

private ITeamRepository login() throws TeamRepositoryException {
ITeamRepository repository = TeamPlatform.getTeamRepositoryService()
.getUnmanagedRepository(REPOSITORY_URI);
assertFalse(repository.loggedIn());
repository.registerLoginHandler(new ITeamRepository.ILoginHandler() {
public ILoginInfo challenge(ITeamRepository repo) {
return new ILoginInfo() {
public String getUserId() {
return "ADMIN";
}

public String getPassword() {
return "ADMIN";
}
};
}
});
repository.login(null);
assertTrue(repository.loggedIn());
return repository;
}

}


I added the following Referenced Libraries:

com.ibm.team.repository.common
com.ibm.team.repository.client
org.eclipse.core.runtime
junit
org.eclipse.equinox.common
org.eclipse.equinox.registry
log4j
org.eclipse.osgi
commons-logging
org.eclipse.core.jobs
com.ibm.team.repository.common.remoteaccess


I use the following VM arguments:

-Dcom.ibm.team.core.tests.repo=local -Dcom.ibm.team.repository.db.jdbc.location=${target_home}/../../server/jazztalk/repositoryDB
-Djetty.http.port=8080
-Djetty.https.port=8443
-Dserver.port=8080


What is the problem and how can I solve it?

Thanks in advance
Kai

0 votes



One answer

Permanent link
kainehring wrote:
Hi,

I would like to access the Jazz-Repository from outside, means from
another program. Currently I want to connect to the
"JazzTalk" service, using an own jUnit-Test (just for
testing purposes). I created a Java-Project (not Plugin-Project!) and
used the JazzLoginTestCase.java as a skeleton. The unit-tests fails
with a runtime exception: "No Server Container Descriptors were
found on the classpath. Please check that the Jetty bundles are
included in your launch or packaging."

package ca.ucalgary.jazzconnect.test;

import junit.framework.*;

import com.ibm.team.repository.client.ITeamRepository;
import com.ibm.team.repository.client.TeamPlatform;
import com.ibm.team.repository.common.TeamRepositoryException;

public class JazzLoginTestCase extends TestCase {

private ITeamRepository repo;

protected void setUp() throws Exception {
super.setUp();

if (!TeamPlatform.isStarted())
TeamPlatform.startup();

repo = login();
}

@SuppressWarnings("deprecation")
protected void tearDown() throws Exception {
repo.logout(null);
assertFalse(repo.loggedIn());
repo = null;

super.tearDown();
}

//********************************************************************************
// own test-code
//********************************************************************************

public void testLogin() {

// replace with a real test case in the future...
assertTrue(true);

}


//********************************************************************************
/**
* The URI scheme <code>"local:"</code> creates
a Jazz server on the same
* thread as the client. Use
code>http://localhost:9080/jazz</code> for
* remote mode testing.
*/
private static final String REPOSITORY_URI = "local:";

private ITeamRepository login() throws TeamRepositoryException {
ITeamRepository repository =
TeamPlatform.getTeamRepositoryService()
.getUnmanagedRepository(REPOSITORY_URI);
assertFalse(repository.loggedIn());
repository.registerLoginHandler(new ITeamRepository.ILoginHandler()
{
public ILoginInfo challenge(ITeamRepository repo) {
return new ILoginInfo() {
public String getUserId() {
return "ADMIN";
}

public String getPassword() {
return "ADMIN";
}
};
}
});
repository.login(null);
assertTrue(repository.loggedIn());
return repository;
}

}


I added the following Referenced Libraries:

com.ibm.team.repository.common
com.ibm.team.repository.client
org.eclipse.core.runtime
junit
org.eclipse.equinox.common
org.eclipse.equinox.registry
log4j
org.eclipse.osgi
commons-logging
org.eclipse.core.jobs
com.ibm.team.repository.common.remoteaccess


I use the following VM arguments:

-Dcom.ibm.team.core.tests.repo=local
-Dcom.ibm.team.repository.db.jdbc.location=${target_home}/../../server/jazztalk/repositoryDB
-Djetty.http.port=8080
-Djetty.https.port=8443
-Dserver.port=8080


What is the problem and how can I solve it?

Thanks in advance
Kai


Hi Kai,

Here are some ideas that will hopefully get you unstuck.

First, you should be accessing the service through its client library.
So I think you will want code like this:

IJazzTalkClientLibrary clientLibrary = (IJazzTalkClientLibrary)
repo.getClientLibrary(IJazzTalkClientLibrary.class);
Message[] messages = clientLibrary.getAllMessages(monitor);

(See the code in the com.example.jazztalk.rcp.ui plugin that uses the
JazzTalk client library)

This also means that you will have to reference the JazzTalk common and
client plugins along with the others you list (and possibly even more).

Also, I don't think using the repository URL "local:" makes sense for
what you are doing. You should start the server as a separate process
and then use a repository URL like "http://localhost:9080/jazz" to
connect to it.

--
Chris Daly
Jazz Component Development Team

0 votes

Your answer

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 10,954

Question asked: Apr 02 '08, 4:06 p.m.

Question was seen: 7,009 times

Last updated: Apr 02 '08, 4:06 p.m.

Confirmation Cancel Confirm