The URL does change from one call to another so the constructor taking a URL won't work here.

Set instead of List, yes that makes sense.

/**
* return all packages in the jar matching one of these annotations
* if annotationsToLookFor is empty, return all packages
*/
Set<Package> getPackagesInJar(URL jartoScan, Set<Annotation> annotationsToLookFor);

/**
* return all classes in the jar matching one of these annotations
* if annotationsToLookFor is empty, return all classes
*/
Set<Class<?>> getClassesInJar(URL jartoScan, Set<Annotation> annotationsToLookFor);

/**
* return all files in the jar matching one of these file names
* if filePatterns is empty, return all files
* eg **/*.hbm.xml, META-INF/orm.xml
*/
Set<[structure containing file name + InputStream]> getFilesInJar(URL jartoScan, Set<String> filePatterns);

Optional contract but would be nice to have:

/**
* return all files in the classpath (ie PU visibility) matching one of these file names
* if filePatterns is empty, return all files
* the use case is really exact file name.
*/
Set<[structure containing file name + InputStream]> getFilesInClasspath(URL jartoScan, Set<String> filePatterns);

/** return the unqualified JAR name ie customer-model.jar or store.war */
String getUnqualifiedJarName(URL);

On  Mar 27, 2009, at 18:12, Elias Ross wrote:

Probably would make more sense to pass in a Set<T> or Collection<T> as
the method arguments, as Set<X> is being returned.

And since many of the methods take a URL, maybe make it more OOP
style, like something like:

class JarScanner {
 public JarScanner(URL url);
 public Set<Entry> getFiles(Collection<String> filePatterns);
}

On Fri, Mar 27, 2009 at 2:49 PM, Emmanuel Bernard
<emman...@hibernate.org> wrote:
I have been chatting with Ales and here is the contract that HEM could rely
on to scan entities and DD files.

Here is a proposal for the contract

/**
 * return all packages in the jar matching one of these annotations
 * if annotationsToLookFor is empty, return all packages
 */
Set<Package> getPackagesInJar(URL jartoScan, List<Annotation>
annotationsToLookFor);

/**
 * return all classes in the jar matching one of these annotations
 * if annotationsToLookFor is empty, return all classes
 */
Set<Class<?>> getClassesInJar(URL jartoScan, List<Annotation>
annotationsToLookFor);

/**
 * return all files in the jar matching one of these file names
 * if filePatterns is empty, return all files
 * eg **/*.hbm.xml, META-INF/orm.xml
 */
Set<[structure containing file name + InputStream]> getFilesInJar(URL
jartoScan, List<String> filePatterns);

Optional contract but would be nice to have:

/**
* return all files in the classpath (ie PU visibility) matching one of
these file names
 * if filePatterns is empty, return all files
 * the use case is really exact file name.
 */
Set<[structure containing file name + InputStream]> getFilesInClasspath(URL
jartoScan, List<String> filePatterns);

/** return the unqualified JAR name ie customer-model.jar or store.war */
String getUnqualifiedJarName(URL);



_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to