it looks like my trouble with the prestartupdate has been a timing problem. one needs to start the p2.engine and give the service time to be registered. maybe you could fix that in the example.
But now I have the next questions. I have a client-server scenario where client and server must match. so the client asks the server for his version at startup and then looks for updates.
I try that by providing a Policy that goes like this: (Is a little bit ugly as Ive reads that I have to register the Policy early, but the server version can be queried only after login time). I guess I could use the default policy and onle set the query, but for now this should be my first hops with this.
public class VersionPolicy extends Policy {
private String serverVersion;
public void setServerVersion(String serverVersion) {
this.serverVersion = serverVersion;
}
@Override
public IQuery<IInstallableUnit> getVisibleAvailableIUQuery() {
if (serverVersion == null) {
throw new IllegalStateException("Policy not initialized yet");
}
String[] version = serverVersion.split("\\.");
int major = Integer.parseInt(version[0]);
int minor = Integer.parseInt(version[1]);
int micro = Integer.parseInt(version[2]);
IQuery<IInstallableUnit> query = QueryUtil.createIUQuery("de.eiswind.mango.client.core.mango", new VersionRange(Version.createOSGi(major,
minor, micro), true, Version.createOSGi(major, minor, micro + 1), false));
return query;
}
}
I register the policy as shown in the cloud example in my core Activator.
I guessed the IU form the director output:
runDirector:
[p2.director] Installing de.eiswind.mango.client.core.mango 1.6.2.201005161153.
Is this already my mistake ?
when I upload a new build with a new qualifier the UpdateOperation still says
!ENTRY de.eiswind.mango.client.core 1 0 2010-05-16 12:01:54.641
!MESSAGE Checking for updates
!ENTRY de.eiswind.mango.client.core 1 0 2010-05-16 12:01:55.438
!MESSAGE Done.10000
!ENTRY org.eclipse.equinox.p2.operations 1 10000 2010-05-16 12:01:55.439
!MESSAGE No updates were found.
And if I get this to work the next question would be how I could query for "any" iu (i.e. other features installed by the user) that has the same versionrange.
Any hints would be really appreciated.
Regards
Thomas