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