It appears that RepositoryAdmin.discoverResources(filterStr) pretty much does the same thing as your code below, no?

    public synchronized Resource[] discoverResources(String filterExpr) throws 
InvalidSyntaxException
    {
        initialize();

        Filter filter = filterExpr != null ? m_helper.filter(filterExpr) : null;
        Resource[] resources;
        MapToDictionary dict = new MapToDictionary(null);
        Repository[] repos = listRepositories();
        List matchList = new ArrayList();
        for (int repoIdx = 0; (repos != null) && (repoIdx < repos.length); 
repoIdx++)
        {
            resources = repos[repoIdx].getResources();
            for (int resIdx = 0; (resources != null) && (resIdx < 
resources.length); resIdx++)
            {
                dict.setSourceMap(resources[resIdx].getProperties());
                if (filter == null || filter.match(dict))
                {
                    matchList.add(resources[resIdx]);
                }
            }
        }

        // Convert matching resources to an array an sort them by name.
        resources = (Resource[]) matchList.toArray(new 
Resource[matchList.size()]);
        Arrays.sort(resources, m_nameComparator);
        return resources;
    }

-> richard


On 8/23/13 09:16 , Roland wrote:
I can show you my workaround to illustrate what I mean:

       ...
       repository = repoAdmin.addRepository(obrfile.toURI().toURL());
       resources = repository.getResources();
       for(Resource resource : resources) {
         Capability[] capabilities = resource.getCapabilities();
         for(Capability capability : capabilities) {
           if(capability.getName().equals("fragment")) {
             Map<String,Object> properties = capability.getPropertiesAsMap();
             if(properties.containsKey("host")) {
               Object value = capability.getPropertiesAsMap().get("host");
               if(value instanceof String) {
                 if(hostsymbolicname.equals(value)) {
                   discoveredresources.add(resource);
                 }
               }
             }
           }
         }
       }
       ...

...but it would be fine if it looks like this:

     String filter = "(host=my.host)";
     repoAdmin.discoverResources(filter);


Regards
Roland



--
View this message in context: 
http://apache-felix.18485.x6.nabble.com/OBR-discover-resources-which-have-a-particular-host-tp5004680p5004686.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to