Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Blocker Blocker
    • Resolution: Unresolved
    • Affects Version/s: 1.1
    • Fix Version/s: None
    • Component/s: framework
    • Labels:
      None
    • Environment:
      1. SUN JDK 1.3.1_16 on Windows, hivemind 1.1, tapestry 4.0-rc-1, tomcat 5.0.28
      2. IBM JDK 1.3.1 (Websphere 5.0.1) on Windows, hivemind 1.1, tapestry 4.0-rc-1

      Description

      The 1.3 javac compatability flags are not enough to make Hivemind JDK 1.3 compliant. For instance, running Hivemind in Tomcat 5.0.28 with JDK 1.3.1_16, I get the following error:

      In order to fix the error, I think you need to compile with 1.3.1 or change all uses of "StringBuffer.append (StringBuffer)" to "StringBuffer.append( (Object) StringBuffer)"

      StringBuffer.append( StringBuffer) did not exist until 1.4. I could be nuts, but the repro scenario is:

      1. create this class/method

      public static void main( String args[] ){
      StringBuffer a = new StringBuffer();
      StringBuffer b = new StringBuffer();
      a.append( b );
      }

      2. compile with 1.5 or 1.4 with compatability source=1.3 and target=1.3

      3. run it with JDK 1.3.1_16

      4. should get this error:

      java.lang.NoSuchMethodError: java.lang.StringBuffer: method append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; not found

      Thanks... here's the exception from my app server:

      java.lang.NoSuchMethodError: java.lang.StringBuffer: method append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; not found
      at org.apache.hivemind.service.impl.MethodFabImpl.toString(MethodFabImpl.java:98)
      at java.lang.String.valueOf(String.java:2466)
      at java.lang.StringBuffer.append(StringBuffer.java:387)
      at org.apache.hivemind.service.impl.ClassFabImpl.buildMethods(ClassFabImpl.java:173)
      at org.apache.hivemind.service.impl.ClassFabImpl.toString(ClassFabImpl.java:149)
      at org.apache.tapestry.util.exception.ExceptionAnalyzer.buildDescription(ExceptionAnalyzer.java:177)
      at org.apache.tapestry.util.exception.ExceptionAnalyzer.analyze(ExceptionAnalyzer.java:86)
      at org.apache.tapestry.util.exception.ExceptionAnalyzer.reportException(ExceptionAnalyzer.java:378)
      at org.apache.tapestry.error.RequestExceptionReporterImpl.reportRequestException(RequestExceptionReporterImpl.java:59)
      at $RequestExceptionReporter_10830ff52c9.reportRequestException($RequestExceptionReporter_10830ff52c9.java)
      at $RequestExceptionReporter_10830ff52c8.reportRequestException($RequestExceptionReporter_10830ff52c8.java)
      at org.apache.tapestry.error.ExceptionPresenterImpl.presentException(ExceptionPresenterImpl.java:53)
      at $ExceptionPresenter_10830ff529b.presentException($ExceptionPresenter_10830ff529b.java)
      at $ExceptionPresenter_10830ff529a.presentException($ExceptionPresenter_10830ff529a.java)
      at org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:121)
      at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:280)
      at org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
      at $WebRequestServicer_10830ff52fd.service($WebRequestServicer_10830ff52fd.java)
      at $WebRequestServicer_10830ff52fc.service($WebRequestServicer_10830ff52fc.java)
      at $WebRequestServicer_10830ff52f9.service($WebRequestServicer_10830ff52f9.java)
      at $WebRequestServicer_10830ff52f8.service($WebRequestServicer_10830ff52f8.java)
      at org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
      at $ServletRequestServicer_10830ff52dd.service($ServletRequestServicer_10830ff52dd.java)
      at $ServletRequestServicer_10830ff52dc.service($ServletRequestServicer_10830ff52dc.java)
      at org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
      at $ServletRequestServicerFilter_10830ff52d9.service($ServletRequestServicerFilter_10830ff52d9.java)
      at $ServletRequestServicerFilter_10830ff52d8.service($ServletRequestServicerFilter_10830ff52d8.java)
      at $ServletRequestServicer_10830ff52de.service($ServletRequestServicer_10830ff52de.java)
      at org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
      at $ServletRequestServicerFilter_10830ff52d7.service($ServletRequestServicerFilter_10830ff52d7.java)
      at $ServletRequestServicerFilter_10830ff52d6.service($ServletRequestServicerFilter_10830ff52d6.java)
      at $ServletRequestServicer_10830ff52de.service($ServletRequestServicer_10830ff52de.java)
      at org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
      at $ServletRequestServicerFilter_10830ff52db.service($ServletRequestServicerFilter_10830ff52db.java)
      at $ServletRequestServicerFilter_10830ff52da.service($ServletRequestServicerFilter_10830ff52da.java)
      at $ServletRequestServicer_10830ff52de.service($ServletRequestServicer_10830ff52de.java)
      at $ServletRequestServicer_10830ff52d1.service($ServletRequestServicer_10830ff52d1.java)
      at $ServletRequestServicer_10830ff52d0.service($ServletRequestServicer_10830ff52d0.java)
      at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
      at org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:79)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

      1. hivemind-163.patch
        1 kB
        Johan Lindquist

        Activity

        Hide
        Johan Lindquist added a comment -

        Having looked a little at this, it looks like there is only one (the above) place where we use the method.

        The call can as easily be replaced by sb.toString() - assume this has the same effect as casting it to object.

        Will attach a patch.

        Show
        Johan Lindquist added a comment - Having looked a little at this, it looks like there is only one (the above) place where we use the method. The call can as easily be replaced by sb.toString() - assume this has the same effect as casting it to object. Will attach a patch.
        Hide
        Johan Lindquist added a comment -

        Patch for removing Java 1.5 dependency

        Show
        Johan Lindquist added a comment - Patch for removing Java 1.5 dependency

          People

          • Assignee:
            Unassigned
            Reporter:
            Alex Victoria
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:

              Development