// Generated by the Maven Archetype Plug-in
package my.erx.woapp.app;

import my.erx.woapp.action.DirectAction;
import my.erx.woapp.app.request.JarResourceRequestHandler;
import my.erx.woapp.components.Main;
import ognl.helperfunction.WOHelperFunctionTagRegistry;

import com.webobjects.appserver.WOSession;
import com.webobjects.foundation.NSLog;
import com.webobjects.foundation._NSUtilities;

import er.extensions.appserver.ERXApplication;
import er.extensions.foundation.ERXPatcher;
import er.extensions.migration.ERXMigrator;

public class Application extends ERXApplication {

	public static void main(String[] argv) {
		ERXApplication.main(argv, Application.class);
	}

	public Application() {
		NSLog.out.appendln("Welcome to " + name() + " !");
	}

	/**
	 * Determines the WOSession class to instantiate.
	 * 
	 * @see com.webobjects.appserver.WOApplication#_sessionClass()
	 */
	@Override
	protected Class<? extends WOSession> _sessionClass() {
		return Session.class;
	}

	/**
	 * Install patches including ensuring that Main is correctly resolved at
	 * runtime.
	 * 
	 * @see er.extensions.appserver.ERXApplication#installPatches()
	 */
	@Override
	public void installPatches() {
		super.installPatches();
		
		// component classes
		ERXPatcher.setClassForName(Main.class, "Main");
		_NSUtilities.registerPackage(Main.class.getPackage().getName());
		
		// action classes
		ERXPatcher.setClassForName(DirectAction.class, "DirectAction");
		_NSUtilities.registerPackage(DirectAction.class.getPackage().getName());
		
		// register additional tag shortcuts
		WOHelperFunctionTagRegistry.registerTagShortcut("ERXStyleSheet", "css");
	}

	@Override
	public void finishInitialization() {
		super.finishInitialization();
		if (isDirectConnectEnabled()) {
			registerRequestHandler(new JarResourceRequestHandler(), "_wr_");
			if (ERXApplication.isWO54()) {
				registerRequestHandler(new JarResourceRequestHandler(), "wr");
			}
		}
	}
}
