noel 2003/06/15 11:18:13
Modified: src/java/org/apache/james/nntpserver/repository
NNTPRepositoryImpl.java
Log:
Completed the filtering introduced by Peter in revision 1.16. Filtering is now
conditional.
Revision Changes Path
1.18 +21 -7
jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPRepositoryImpl.java
Index: NNTPRepositoryImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPRepositoryImpl.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- NNTPRepositoryImpl.java 28 Apr 2003 13:02:30 -0000 1.17
+++ NNTPRepositoryImpl.java 15 Jun 2003 18:18:13 -0000 1.18
@@ -132,6 +132,11 @@
private HashMap groupNameMap = null;
/**
+ * Restrict use to newsgroups specified in config only
+ */
+ private boolean definedGroupsOnly = false;
+
+ /**
* The root path as a String.
*/
private String rootPathString = null;
@@ -210,6 +215,7 @@
getLogger().debug("NNTP repository article ID path URL is " +
articleIdPathString);
}
Configuration newsgroupConfiguration = configuration.getChild("newsgroups");
+ definedGroupsOnly = newsgroupConfiguration.getAttributeAsBoolean("only",
false);
groupNameMap = new HashMap();
if ( newsgroupConfiguration != null ) {
Configuration[] children =
newsgroupConfiguration.getChildren("newsgroup");
@@ -308,7 +314,7 @@
* @see org.apache.james.nntpserver.repository.NNTPRepository#getGroup(String)
*/
public NNTPGroup getGroup(String groupName) {
- if (groupNameMap.get(groupName) == null) {
+ if (definedGroupsOnly && groupNameMap.get(groupName) == null) {
if (getLogger().isDebugEnabled()) {
getLogger().debug(groupName + " is not a newsgroup hosted on this
server.");
}
@@ -384,13 +390,22 @@
}
}
+ class GroupFilter implements java.io.FilenameFilter {
+ public boolean accept(java.io.File dir, String name) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug(((definedGroupsOnly ?
groupNameMap.containsKey(name) : true) ? "Accepting ": "Rejecting") + name);
+ }
+
+ return definedGroupsOnly ? groupNameMap.containsKey(name) : true;
+ }
+ }
+
/**
* @see
org.apache.james.nntpserver.repository.NNTPRepository#getMatchedGroups(String)
*/
public Iterator getMatchedGroups(String wildmat) {
- // TODO: Add filter for valid group names
- File[] f = rootPath.listFiles(new AndFileFilter
- (new DirectoryFileFilter(),new GlobFilenameFilter(wildmat)));
+ File[] f = rootPath.listFiles(new AndFileFilter(new GroupFilter(), new
AndFileFilter
+ (new DirectoryFileFilter(),new GlobFilenameFilter(wildmat))));
return getGroups(f);
}
@@ -416,9 +431,8 @@
* @see
org.apache.james.nntpserver.repository.NNTPRepository#getGroupsSince(Date)
*/
public Iterator getGroupsSince(Date dt) {
- // TODO: Add filter for valid group names
- File[] f = rootPath.listFiles(new AndFileFilter
- (new DirectoryFileFilter(),new DateSinceFileFilter(dt.getTime())));
+ File[] f = rootPath.listFiles(new AndFileFilter(new GroupFilter(), new
AndFileFilter
+ (new DirectoryFileFilter(),new DateSinceFileFilter(dt.getTime()))));
return getGroups(f);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]