You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by lu...@apache.org on 2004/11/29 19:56:42 UTC
cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/resourcekind AbstractResourceKind.java
luetzkendorf 2004/11/29 10:56:42
Modified: src/webdav/server/org/apache/slide/webdav/util/resourcekind
AbstractResourceKind.java
Log:
superkinds are now evaluated only once
Revision Changes Path
1.32 +37 -30 jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/resourcekind/AbstractResourceKind.java
Index: AbstractResourceKind.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/resourcekind/AbstractResourceKind.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- AbstractResourceKind.java 8 Oct 2004 16:36:09 -0000 1.31
+++ AbstractResourceKind.java 29 Nov 2004 18:56:42 -0000 1.32
@@ -485,39 +485,46 @@
return plainClassName( getClass() );
}
+ private List superKinds = null;
+ /**
+ * Returns a list of {@link ResourceKind} objects that represent all
+ * <em>super kinds</em>.
+ */
protected List getSuperKinds() {
- List result = new ArrayList();
- Class myclass = getClass();
- String myclassName = plainClassName( myclass );
- Class[] ifs = myclass.getInterfaces();
- for( int i = 0; i < ifs.length; i++ ) {
- Class myif = ifs[i];
- String myifName = plainClassName( myif );
- if( !myclassName.startsWith(myifName) )
- continue;
- Class[] superifs = myif.getInterfaces();
- for( int j = 0; j < superifs.length; j++ ) {
- Class superif = superifs[j];
- String superifName = plainClassName( superif );
- if( "ResourceKind".equals(superifName) )
+ if (superKinds == null) {
+ List result = new ArrayList();
+ Class myclass = getClass();
+ String myclassName = plainClassName( myclass );
+ Class[] ifs = myclass.getInterfaces();
+ for( int i = 0; i < ifs.length; i++ ) {
+ Class myif = ifs[i];
+ String myifName = plainClassName( myif );
+ if( !myclassName.startsWith(myifName) )
continue;
- Class superclass = null;
- ResourceKind superkind = null;
- try {
- superclass = Class.forName( superif.getName()+"Impl" );
- Class[] ptypes = new Class[0];
- Method facmeth = superclass.getMethod( "getInstance", ptypes );
- Object[] parms = new Object[0];
- result.add( facmeth.invoke(null, parms) );
- }
- catch( Exception x ) {
- x.printStackTrace();
- throw new IllegalStateException( x.getMessage() );
+ Class[] superifs = myif.getInterfaces();
+ for( int j = 0; j < superifs.length; j++ ) {
+ Class superif = superifs[j];
+ String superifName = plainClassName( superif );
+ if( "ResourceKind".equals(superifName) )
+ continue;
+ Class superclass = null;
+ try {
+ superclass = Class.forName( superif.getName()+"Impl" );
+ Class[] ptypes = new Class[0];
+ Method facmeth = superclass.getMethod( "getInstance", ptypes );
+ Object[] parms = new Object[0];
+ result.add( facmeth.invoke(null, parms) );
+ }
+ catch( Exception x ) {
+ x.printStackTrace();
+ throw new IllegalStateException( x.getMessage() );
+ }
}
}
+ this.superKinds = result;
}
- return result;
+ return this.superKinds;
}
private String plainClassName( Class c ) {
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org