[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[p2-dev] Types of objects returned by IQueryable

Hi,
Aside from the IArtifactRepository, is there any IQueryable that has an iterator that can return objects of different types?


The reason I ask is that it would be beneficial to think about the IQueryable in terms of generics (even if we don't use them currently). I.e.:

public interface IQueryable<T> {
   Iterator<T> iterator();
}

The IQuery and IQueryResult could then also be made to act on specific types:

public interface IQuery<T> {
  IQueryResult<T> perform(Iterator<T> iterator);
}

public interface IQueryResult<T> {
  Iterator<T> iterator();
  ...
}

etc.

The reason I ask, is that we would then need to reconsider the decision to make the IRepository extend the IQueryable and instead do something like:

public interface IArtifactRepository extends IRepository {
  IQueryable<IArtifactKey> getQueryableKeys();

  IQueryable<IArtifactDescriptor> getQueryableDescriptors();
  ...
}

public interface IMetadataRepository extends IRepository {
  IQueryable<IInstallableUnits> getQueryable();
}

Sure, that would eliminate the ability to write a query that processes both keys and descriptors, but do we really need that?

One reason I bring this up is that I'm thinking about how to make an IQueryable capable of providing indexes. An index is easier to express if it is connected to a specific type.

Are we still planning to do Java 5 generics in the API?

- thomas