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