Hi,

2014-12-10 17:43 GMT+02:00 Christopher Schultz <ch...@christopherschultz.net
>:
>
> Violetta,
>
> On 12/8/14 4:04 AM, violet...@apache.org wrote:
> > Author: violetagg
> > Date: Mon Dec  8 09:04:56 2014
> > New Revision: 1643766
> >
> > URL: http://svn.apache.org/r1643766
> > Log:
> > Extract several "protected" methods in order to make StandardRoot
easier for extending.
> >
> > Modified:
> >     tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java
> >
> > Modified:
tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java
> > URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java?rev=1643766&r1=1643765&r2=1643766&view=diff
> >
==============================================================================
> > ---
tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java
(original)
> > +++
tomcat/trunk/java/org/apache/catalina/webresources/StandardRoot.java Mon
Dec  8 09:04:56 2014
> > @@ -457,6 +457,10 @@ public class StandardRoot extends Lifecy
> >          return postResources.toArray(new WebResourceSet[0]);
> >      }
> >
> > +    protected WebResourceSet[] getClassResources() {
> > +        return classResources.toArray(new WebResourceSet[0]);
>
> Any reason not to properly-size the argument to toArray? If you pass-in
> WebResourceSet[0], you create an array that can't be used for anything,
> then toArray needs to create another one for you, so you get two array
> allocations when only one is necessary.

Fixed with r1646420

Thanks,
Violeta

> -chris
>
> > +    }
> > +
> >      @Override
> >      public void setAllowLinking(boolean allowLinking) {
> >          this.allowLinking = allowLinking;
> > @@ -633,9 +637,7 @@ public class StandardRoot extends Lifecy
> >
> >          cacheJmxName = register(cache, getObjectNameKeyProperties() +
",name=Cache");
> >
> > -        // Ensure support for jar:war:file:/ URLs will be available
(required
> > -        // for resource JARs in packed WAR files).
> > -        TomcatURLStreamHandlerFactory.register();
> > +        registerURLStreamHandlerFactory();
> >
> >          if (context == null) {
> >              throw new IllegalStateException(
> > @@ -649,29 +651,17 @@ public class StandardRoot extends Lifecy
> >          }
> >      }
> >
> > +    protected void registerURLStreamHandlerFactory() {
> > +        // Ensure support for jar:war:file:/ URLs will be available
(required
> > +        // for resource JARs in packed WAR files).
> > +        TomcatURLStreamHandlerFactory.register();
> > +    }
> > +
> >      @Override
> >      protected void startInternal() throws LifecycleException {
> > -        String docBase = context.getDocBase();
> > -
> >          mainResources.clear();
> >
> > -        if (docBase == null) {
> > -            main = new EmptyResourceSet(this);
> > -        } else {
> > -            File f = new File(docBase);
> > -            if (!f.isAbsolute()) {
> > -                f = new
File(((Host)context.getParent()).getAppBaseFile(), f.getPath());
> > -            }
> > -            if (f.isDirectory()) {
> > -                main = new DirResourceSet(this, "/",
f.getAbsolutePath(), "/");
> > -            } else if(f.isFile() && docBase.endsWith(".war")) {
> > -                main = new JarResourceSet(this, "/",
f.getAbsolutePath(), "/");
> > -            } else {
> > -                throw new IllegalArgumentException(
> > -                        sm.getString("standardRoot.startInvalidMain",
> > -                                f.getAbsolutePath()));
> > -            }
> > -        }
> > +        main = createMainResourceSet();
> >
> >          mainResources.add(main);
> >
> > @@ -694,6 +684,31 @@ public class StandardRoot extends Lifecy
> >          setState(LifecycleState.STARTING);
> >      }
> >
> > +    protected WebResourceSet createMainResourceSet() {
> > +        String docBase = context.getDocBase();
> > +
> > +        WebResourceSet mainResourceSet;
> > +        if (docBase == null) {
> > +            mainResourceSet = new EmptyResourceSet(this);
> > +        } else {
> > +            File f = new File(docBase);
> > +            if (!f.isAbsolute()) {
> > +                f = new
File(((Host)context.getParent()).getAppBaseFile(), f.getPath());
> > +            }
> > +            if (f.isDirectory()) {
> > +                mainResourceSet = new DirResourceSet(this, "/",
f.getAbsolutePath(), "/");
> > +            } else if(f.isFile() && docBase.endsWith(".war")) {
> > +                mainResourceSet = new JarResourceSet(this, "/",
f.getAbsolutePath(), "/");
> > +            } else {
> > +                throw new IllegalArgumentException(
> > +                        sm.getString("standardRoot.startInvalidMain",
> > +                                f.getAbsolutePath()));
> > +            }
> > +        }
> > +
> > +        return mainResourceSet;
> > +    }
> > +
> >      @Override
> >      protected void stopInternal() throws LifecycleException {
> >          for (ArrayList<WebResourceSet> list : allResources) {
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: dev-h...@tomcat.apache.org
> >
>

Reply via email to