[305636] Unable to download additional server adapters
diff --git a/plugins/org.eclipse.wst.server.discovery/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.wst.server.discovery/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..c21b754
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.discovery/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,6 @@
+#Mon Apr 05 11:41:05 EDT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.ondemandthreshold=4
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.staticondemandthreshold=4
diff --git a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java
index 99a1c9a..6735f3d 100644
--- a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java
+++ b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java
@@ -241,29 +241,27 @@
* @return The requested service
*/
public static Object getService(BundleContext context, String name) {
- IProvisioningAgent agent = getAgent(context);
- return agent == null ? null : agent.getService(name);
- }
- /**
- * Returns the provisioning agent if available or <code>null</code> otherwise. Note that this
- * is a helper class that <b>immediately</b> ungets the agent service reference. This results
- * in a window where the system thinks the agent service is not in use but indeed the caller is about to
- * use the returned agent object.
- *
- * @param context the bundle context
- * @return the agent or <code>null</code>
- */
- public static IProvisioningAgent getAgent(BundleContext context) {
- if (context == null)
- return null;
ServiceReference reference = context.getServiceReference(IProvisioningAgent.SERVICE_NAME);
if (reference == null)
return null;
+
+ IProvisioningAgent result = getAgent(context);
+ if (result == null)
+ return null;
try {
- return (IProvisioningAgent) context.getService(reference);
+ return result.getService(name);
} finally {
context.ungetService(reference);
}
}
+
+ public static IProvisioningAgent getAgent(BundleContext context) {
+ ServiceReference reference = context.getServiceReference(IProvisioningAgent.SERVICE_NAME);
+ if (reference == null)
+ return null;
+ IProvisioningAgent result = (IProvisioningAgent) context.getService(reference);
+
+ return result;
+ }
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/ExtensionUpdateSite.java b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/ExtensionUpdateSite.java
index fbb6dba..d340c14 100644
--- a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/ExtensionUpdateSite.java
+++ b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/ExtensionUpdateSite.java
@@ -12,18 +12,21 @@
import java.net.URI;
import java.util.*;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.equinox.internal.p2.updatesite.metadata.UpdateSiteMetadataRepositoryFactory;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.engine.IProfileRegistry;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.IRequirement;
-import org.eclipse.equinox.p2.query.ExpressionQuery;
-import org.eclipse.equinox.p2.query.IQuery;
-import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
+import org.eclipse.equinox.p2.query.*;
import org.eclipse.equinox.p2.repository.IRepositoryManager;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
-import org.eclipse.wst.server.discovery.internal.PatternInstallableUnitQuery;
+import org.eclipse.wst.server.discovery.internal.ExtensionUtility;
import org.eclipse.wst.server.discovery.internal.Trace;
+import org.osgi.framework.BundleContext;
/*
* From Kosta:
* feature version (optional)
@@ -63,21 +66,46 @@
public List<Extension> getExtensions(IProgressMonitor monitor) throws CoreException {
try {
UpdateSiteMetadataRepositoryFactory mrf = new UpdateSiteMetadataRepositoryFactory();
+
+ BundleContext bd = org.eclipse.wst.server.discovery.internal.Activator.getDefault().getBundle().getBundleContext();
+ mrf.setAgent(ExtensionUtility.getAgent(bd));
+
URI url2 = new URI(url);
IMetadataRepository repo = mrf.load(url2, IRepositoryManager.REPOSITORIES_ALL, monitor);
//Query query = new InstallableUnitQuery("org.eclipse.wst.server.core.serverAdapter");
//Query query = CompoundQuery.createCompoundQuery(new Query[] {new
// IUPropertyQuery(IInstallableUnit.PROP_TYPE_CATEGORY, Boolean.toString(true)),
// new IUPropertyQuery(IInstallableUnit.PROP_NAME,"org.eclipse.wst.server.core.serverAdapter")}, true);
- IQuery<IInstallableUnit> query = new PatternInstallableUnitQuery("org.eclipse.wst.server.core.serverAdapter");
+//---->>>>
+ IProfileRegistry profileRegistry = (IProfileRegistry) ExtensionUtility.getService(bd, IProfileRegistry.class.getName());
+ IProfile[] profiles = profileRegistry.getProfiles();
+ IProfile profile = profileRegistry.getProfile(IProfileRegistry.SELF);
+
+ //IQuery<IInstallableUnit> query = QueryUtil.createIUAnyQuery();
+ // IQuery<IInstallableUnit> query = QueryUtil.createIUQuery("org.eclipse.wst.server.core.serverAdapter");
+ //Query query = new InstallableUnitQuery("org.eclipse.wst.server.core.serverAdapter");
+ //List<String> list2 = new ArrayList();
+ //Query query = new ExtensionInstallableUnitQuery(list2);
+ //IQueryResult<IInstallableUnit> collector = profile.query(query, monitor);
+//<-------
+
+ //IQuery<IInstallableUnit> query = QueryUtil.createIUCategoryQuery();
+ IQuery<IInstallableUnit> query = QueryUtil.createMatchQuery("id ~=/*org.eclipse.wst.server.core.serverAdapter/");
+
IQueryResult<IInstallableUnit> collector = repo.query(query, monitor);
+
List<Extension> list = new ArrayList<Extension>();
for (IInstallableUnit iu: collector.toUnmodifiableSet()) {
Collection<IRequirement> req = iu.getRequirements();
if (req != null) {
for (IRequirement requirement : req) {
- query = new ExpressionQuery<IInstallableUnit>(IInstallableUnit.class, requirement.getMatches());
+
+ //IMatchExpression<IInstallableUnit> matches = requirement.getMatches();
+ //query = QueryUtil.createQuery(matches);
+ IMatchExpression<IInstallableUnit> matches = requirement.getMatches();
+ query = new ExpressionMatchQuery<IInstallableUnit>(IInstallableUnit.class, matches);
+
IQueryResult<IInstallableUnit> collector2 = repo.query(query, monitor);
Iterator<IInstallableUnit> iter2 = collector2.iterator();
while (iter2.hasNext()) {