001    // Copyright 2006-2007 Daniel Gredler
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package net.sf.beanform.util;
016    
017    /**
018     * Utility class that can determine the version of Tapestry being used in the current
019     * runtime environment, providing version-specific data to the rest of the library.
020     *
021     * @author Daniel Gredler
022     */
023    public final class TapestryCompat {
024    
025        private final static boolean IS_TAPESTRY_41 = isTapestry41();
026    
027        final static String TAPESTRY_41_CANCEL_JS = "tapestry.form.cancel(this.form)";
028        final static String TAPESTRY_40_CANCEL_JS = "this.form.events.cancel()";
029    
030        final static String TAPESTRY_41_REFRESH_JS = "tapestry.form.refresh(this.form)";
031        final static String TAPESTRY_40_REFRESH_JS = "this.form.events.refresh()";
032    
033        TapestryCompat() {
034            // Empty.
035        }
036    
037        public static String getCancelJavaScript() {
038            if( IS_TAPESTRY_41 ) return TAPESTRY_41_CANCEL_JS;
039            else return TAPESTRY_40_CANCEL_JS;
040        }
041    
042        public static String getRefreshJavaScript() {
043            if( IS_TAPESTRY_41 ) return TAPESTRY_41_REFRESH_JS;
044            else return TAPESTRY_40_REFRESH_JS;
045        }
046    
047        private static boolean isTapestry41() {
048            boolean isTapestry41;
049            try {
050                Class.forName( "org.apache.tapestry.IJSONRender" );
051                isTapestry41 = true;
052            }
053            catch( Throwable t ) {
054                isTapestry41 = false;
055            }
056            return isTapestry41;
057        }
058    
059    }