Uploaded image for project: 'Forrest'
  1. Forrest
  2. FOR-924

forrest war fails with error in ForrestConfModule

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.8
    • Fix Version/s: 0.8
    • Component/s: Launch servlet WAR
    • Labels:
      None

      Description

      With the current trunk (r436707) doing 'forrest war' and deploy to either full Jetty-4 or Tomcat-4
      error log has this ...

      ------------
      ERROR (2006-08-26) 00:17.47:047 [core.manager] (Unknown-URI) Unknown-Thread/CoreServiceManager: Caught an exception trying to initialize the component handler.
      java.lang.NullPointerException
              at org.apache.forrest.conf.ForrestConfUtils.aliasSkinProperties(ForrestConfUtils.java:100)
              at org.apache.forrest.conf.ForrestConfModule.initialize(ForrestConfModule.java:194)
              at org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:244)
      ...
      ------------

      Perhaps this is related to recent changes in forrest properties system.

        Issue Links

          Activity

          Hide
          mstockhammer Martin Stockhammer added a comment -
          By one of the last patches the import of forrest.properties file in ForrestConfModule.java was removed, because in "forrest run" startup they are set from ant as system properties. In Webapp-Modules there is no ant involved and forrest.properties is never read.
          This leads to the NullpointerException in ForrestConfUtils.aliasSkinProperties().
          ---------------------
                  String skinName = props.getProperty("project.skin");
                  if (skinName.equals("crust")) { <<<<------ skinName is 'null'
                      setSkinToUse(props, "krysalis-site");
          --------------------
          My suggestion is, to reinsert the code to import forrest.properties file in ForrestConfModule.java:

          Index: E:/user/martins/devel/eclipse-ws/apache-forrest/main/java/org/apache/forrest/conf/ForrestConfModule.java
          ===================================================================
          Index: E:/user/martins/devel/eclipse-ws/apache-forrest/main/java/org/apache/forrest/conf/ForrestConfModule.java
          ===================================================================
          --- org/apache/forrest/conf/ForrestConfModule.java (revision 447107)
          +++ org/apache/forrest/conf/ForrestConfModule.java (working copy)
          @@ -175,6 +175,20 @@
                       filteringProperties = loadXMLPropertiesFromURI(filteringProperties,
                               forrestPropertiesStringURI);
           
          + // get forrest.properties and load the values
          + forrestPropertiesStringURI = projectHome + SystemUtils.FILE_SEPARATOR
          + + "forrest.properties";
          + filteringProperties = loadAntPropertiesFromURI(filteringProperties,
          + forrestPropertiesStringURI);
          +
          + // get default-forrest.properties and load the values
          + String defaultForrestPropertiesStringURI = contextHome + SystemUtils.FILE_SEPARATOR
          + + "default-forrest.properties";
          + filteringProperties = loadAntPropertiesFromURI(filteringProperties,
          + defaultForrestPropertiesStringURI);
          +
          +
          +
                       // Load plugin default properties
                       String strPluginList = filteringProperties
                               .getProperty("project.required.plugins");
          @@ -309,5 +323,46 @@
               private final void debug(String debugString) {
                   getLogger().debug(debugString);
               }
          +
          + /**
          + * @param antPropertiesStringURI
          + * @throws MalformedURLException
          + * @throws IOException
          + * @throws SourceNotFoundException
          + */
          + private AntProperties loadAntPropertiesFromURI(AntProperties precedingProperties,
          + String antPropertiesStringURI) throws MalformedURLException, IOException,
          + SourceNotFoundException {
           
          + Source source = null;
          + InputStream in = null;
          + try {
          + source = m_resolver.resolveURI(antPropertiesStringURI);
          + if (debugging())
          + debug("Searching for forrest.properties in" + source.getURI());
          + if (source.exists()){
          + in = source.getInputStream();
          + filteringProperties = new AntProperties(precedingProperties);
          + filteringProperties.load(in);
          +
          + if (debugging())
          + debug("Loaded:" + antPropertiesStringURI + filteringProperties.toString());
          + }
          +
          + } finally {
          + if (source != null) {
          + m_resolver.release(source);
          + }
          + if (in != null) {
          + try {
          + in.close();
          + } catch (IOException e) {
          + }
          + }
          + }
          +
          + return filteringProperties;
          + }
          +
          +
           }
          Show
          mstockhammer Martin Stockhammer added a comment - By one of the last patches the import of forrest.properties file in ForrestConfModule.java was removed, because in "forrest run" startup they are set from ant as system properties. In Webapp-Modules there is no ant involved and forrest.properties is never read. This leads to the NullpointerException in ForrestConfUtils.aliasSkinProperties(). ---------------------         String skinName = props.getProperty("project.skin");         if (skinName.equals("crust")) { <<<<------ skinName is 'null'             setSkinToUse(props, "krysalis-site"); -------------------- My suggestion is, to reinsert the code to import forrest.properties file in ForrestConfModule.java: Index: E:/user/martins/devel/eclipse-ws/apache-forrest/main/java/org/apache/forrest/conf/ForrestConfModule.java =================================================================== Index: E:/user/martins/devel/eclipse-ws/apache-forrest/main/java/org/apache/forrest/conf/ForrestConfModule.java =================================================================== --- org/apache/forrest/conf/ForrestConfModule.java (revision 447107) +++ org/apache/forrest/conf/ForrestConfModule.java (working copy) @@ -175,6 +175,20 @@              filteringProperties = loadXMLPropertiesFromURI(filteringProperties,                      forrestPropertiesStringURI);   + // get forrest.properties and load the values + forrestPropertiesStringURI = projectHome + SystemUtils.FILE_SEPARATOR + + "forrest.properties"; + filteringProperties = loadAntPropertiesFromURI(filteringProperties, + forrestPropertiesStringURI); + + // get default-forrest.properties and load the values + String defaultForrestPropertiesStringURI = contextHome + SystemUtils.FILE_SEPARATOR + + "default-forrest.properties"; + filteringProperties = loadAntPropertiesFromURI(filteringProperties, + defaultForrestPropertiesStringURI); + + +              // Load plugin default properties              String strPluginList = filteringProperties                      .getProperty("project.required.plugins"); @@ -309,5 +323,46 @@      private final void debug(String debugString) {          getLogger().debug(debugString);      } + + /** + * @param antPropertiesStringURI + * @throws MalformedURLException + * @throws IOException + * @throws SourceNotFoundException + */ + private AntProperties loadAntPropertiesFromURI(AntProperties precedingProperties, + String antPropertiesStringURI) throws MalformedURLException, IOException, + SourceNotFoundException {   + Source source = null; + InputStream in = null; + try { + source = m_resolver.resolveURI(antPropertiesStringURI); + if (debugging()) + debug("Searching for forrest.properties in" + source.getURI()); + if (source.exists()){ + in = source.getInputStream(); + filteringProperties = new AntProperties(precedingProperties); + filteringProperties.load(in); + + if (debugging()) + debug("Loaded:" + antPropertiesStringURI + filteringProperties.toString()); + } + + } finally { + if (source != null) { + m_resolver.release(source); + } + if (in != null) { + try { + in.close(); + } catch (IOException e) { + } + } + } + + return filteringProperties; + } + +  }
          Hide
          thorsten Thorsten Scherler added a comment -
          The FOR-924 seems to be provoked by FOR-916
          Show
          thorsten Thorsten Scherler added a comment - The FOR-924 seems to be provoked by FOR-916
          Hide
          thorsten Thorsten Scherler added a comment -
          Should be fixed now. Can you please verify and then close this issue.
          TIA
          Show
          thorsten Thorsten Scherler added a comment - Should be fixed now. Can you please verify and then close this issue. TIA
          Hide
          crossley David Crossley added a comment -
          Confirmed. Thanks Martin.
          Show
          crossley David Crossley added a comment - Confirmed. Thanks Martin.

            People

            • Assignee:
              Unassigned
              Reporter:
              crossley David Crossley
            • Votes:
              1 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development