You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/01/29 10:15:50 UTC

svn commit: r1655557 - in /openmeetings: branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/ branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/ branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/servers/ b...

Author: solomax
Date: Thu Jan 29 09:15:50 2015
New Revision: 1655557

URL: http://svn.apache.org/r1655557
Log:
Memory leak hunting: all additional models are now detached

Modified:
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/MessageTagHandler.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html Thu Jan 29 09:15:50 2015
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:panel>
 		<div>
-	        <span wicket:id="uploadFeedback"/>
+	        <span wicket:id="feedback"/>
 	     </div>
 		<!-- wicket:id="form"  -->
 		<form wicket:id="backupUpload" class="adminForm adminBackupForm">

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java Thu Jan 29 09:15:50 2015
@@ -45,7 +45,6 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.lang.Bytes;
 import org.apache.wicket.util.resource.FileResourceStream;
@@ -53,8 +52,10 @@ import org.apache.wicket.util.time.Durat
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
 
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 /**
  * Panel component to manage Backup Import/Export
  * 
@@ -66,8 +67,7 @@ public class BackupPanel extends AdminPa
 
 	private static final long serialVersionUID = -1L;
 
-	// Create feedback panels
-	final FeedbackPanel uploadFeedback;
+	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
 
 	/**
 	 * Form to handle upload files
@@ -128,13 +128,13 @@ public class BackupPanel extends AdminPa
 						, "Openmeetings - " + dateString).start();
 
 					// repaint the feedback panel so that it is hidden
-					target.add(uploadFeedback, progressBar.setVisible(true));
+					target.add(feedback, progressBar.setVisible(true));
 				}
 
 				@Override
 				protected void onError(AjaxRequestTarget target, Form<?> form) {
 					// repaint the feedback panel so errors are shown
-					target.add(uploadFeedback);
+					target.add(feedback);
 				}
 			});
 			add(timer = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
@@ -150,8 +150,8 @@ public class BackupPanel extends AdminPa
 						timer.stop(target);
 						//TODO change text, localize
 						progressBar.setVisible(false);
-						uploadFeedback.error(th);
-						target.add(uploadFeedback);
+						feedback.error(th);
+						target.add(feedback);
 					} else {
 						progressBar.setModelObject(progressHolder.getProgress());
 						progressBar.refresh(target);
@@ -180,28 +180,34 @@ public class BackupPanel extends AdminPa
 					FileUpload upload = fileUploadField.getFileUpload();
 					try {
 						if (upload == null || upload.getInputStream() == null) {
-							uploadFeedback.error("File is empty");
-							target.add(uploadFeedback);
+							feedback.error("File is empty");
+							target.add(feedback);
 							return;
 						}
 						getBean(BackupImport.class).performImport(upload.getInputStream());
 					} catch (Exception e) {
 						log.error("Exception on panel backup upload ", e);
-						uploadFeedback.error(e);
+						feedback.error(e);
 					}
 					// repaint the feedback panel so that it is hidden
-					target.add(uploadFeedback);
+					target.add(feedback);
 				}
 
 				@Override
 				protected void onError(AjaxRequestTarget target) {
 					// repaint the feedback panel so errors are shown
-					target.add(uploadFeedback);
+					target.add(feedback);
 				}
 			}));
 			add(new Label("cmdLineDesc", WebSession.getString(1505)).setEscapeModelStrings(false));
 		}
 
+		@Override
+		protected void onDetach() {
+			includeFilesInBackup.detach();
+			super.onDetach();
+		}
+		
 		private class BackupProcess implements Runnable {
 			private BackupExport backup;
 			private File backupDir;
@@ -230,11 +236,7 @@ public class BackupPanel extends AdminPa
 	public BackupPanel(String id) {
 		super(id);
 
-		// Create feedback panels
-		uploadFeedback = new FeedbackPanel("uploadFeedback");
-		// Set Id so that it can be replaced dynamically
-		uploadFeedback.setOutputMarkupId(true);
-		add(uploadFeedback);
+		add(feedback);
 
 		BackupForm backupForm = new BackupForm("backupUpload");
 

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java Thu Jan 29 09:15:50 2015
@@ -386,4 +386,10 @@ public class RoomForm extends AdminBaseF
 		updateClients(target);
 		target.appendJavaScript("omRoomPanelInit();");
 	}
+	
+	@Override
+	protected void onDetach() {
+		moderator2add.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html Thu Jan 29 09:15:50 2015
@@ -86,7 +86,7 @@
 				            </div>
 				            <div class="formelement">
 				                <div class="info-text"><wicket:ommessage key="828" /></div>
-				                <label><wicket:ommessage key="191" /></label><input type="hidden" class="input" wicket:id="roomOrganisations" style="height: 80px"/>
+				                <label><wicket:ommessage key="191" /></label><input type="hidden" class="input" wicket:id="roomOrganisations" style="max-height: 80px"/>
 				            </div>
 				        </fieldset>
 				        

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java Thu Jan 29 09:15:50 2015
@@ -46,12 +46,10 @@ import org.apache.wicket.util.time.Durat
  * 
  */
 public class ServerForm extends AdminBaseForm<Server> {
-
 	private final WebMarkupContainer listContainer;
 	private static final long serialVersionUID = 1L;
 
-	public ServerForm(String id, WebMarkupContainer listContainer,
-			final Server server) {
+	public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
 		super(id, new CompoundPropertyModel<Server>(server));
 		setOutputMarkupId(true);
 		this.listContainer = listContainer;
@@ -79,10 +77,8 @@ public class ServerForm extends AdminBas
 
 	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
-		Application.getBean(ServerDao.class).update(getModelObject(),
-				WebSession.getUserId());
-		Server server = Application.getBean(ServerDao.class).get(
-				getModelObject().getId());
+		Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
+		Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
 		setModelObject(server);
 		hideNewRecord();
 		target.add(this);
@@ -104,8 +100,7 @@ public class ServerForm extends AdminBas
 	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
 		Server server = getModelObject();
 		if (server.getId() > 0) {
-			server = Application.getBean(ServerDao.class).get(
-					server.getId());
+			server = Application.getBean(ServerDao.class).get(server.getId());
 		} else {
 			server = new Server();
 		}
@@ -116,8 +111,7 @@ public class ServerForm extends AdminBas
 
 	@Override
 	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
-		Application.getBean(ServerDao.class).delete(getModelObject(),
-				WebSession.getUserId());
+		Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
 		this.setModelObject(new Server());
 		target.add(listContainer);
 		target.add(this);

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java Thu Jan 29 09:15:50 2015
@@ -35,8 +35,7 @@ import org.apache.wicket.markup.parser.f
 import org.apache.wicket.markup.resolver.IComponentResolver;
 import org.apache.wicket.util.string.Strings;
 
-public class MessageTagHandler extends AbstractMarkupFilter implements
-		IComponentResolver {
+public class MessageTagHandler extends AbstractMarkupFilter implements IComponentResolver {
 	/** */
 	private static final long serialVersionUID = 1L;
 

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java Thu Jan 29 09:15:50 2015
@@ -59,7 +59,7 @@ import com.googlecode.wicket.jquery.ui.w
 
 public class ForgetPasswordDialog extends AbstractFormDialog<String> {
 	private static final Logger log = Red5LoggerFactory.getLogger(ForgetPasswordDialog.class, webAppRootKey);
-	private static final long serialVersionUID = 8494008571497363018L;
+	private static final long serialVersionUID = 1L;
 	private String sendLbl = WebSession.getString(317);
 	private DialogButton send = new DialogButton(sendLbl);
 	private DialogButton cancel = new DialogButton(WebSession.getString(122));
@@ -79,7 +79,7 @@ public class ForgetPasswordDialog extend
 	public ForgetPasswordDialog(String id) {
 		super(id, WebSession.getString(312));
 		add(form = new Form<String>("form") {
-			private static final long serialVersionUID = 6340692639510268144L;
+			private static final long serialVersionUID = 1L;
 			private IModel<String> lblModel = Model.of(WebSession.getString(315));
 			private Label label = new Label("label", lblModel);
 			
@@ -93,7 +93,7 @@ public class ForgetPasswordDialog extend
 						.add(new Radio<Type>("login", Model.of(Type.login)).setOutputMarkupId(true))
 						.setOutputMarkupId(true));
 				rg.add(new AjaxFormChoiceComponentUpdatingBehavior() {
-					private static final long serialVersionUID = 5814272716387415523L;
+					private static final long serialVersionUID = 1L;
 
 					@Override
 					protected void onUpdate(AjaxRequestTarget target) {
@@ -103,7 +103,7 @@ public class ForgetPasswordDialog extend
 					}
 				});
 				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
-					private static final long serialVersionUID = 5257502637636428620L;
+					private static final long serialVersionUID = 1L;
 
 					@Override
 					protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
@@ -130,6 +130,12 @@ public class ForgetPasswordDialog extend
 					}
 				}
 			}
+			
+			@Override
+			protected void onDetach() {
+				lblModel.detach();
+				super.onDetach();
+			}
 		});
 		confirmDialog = new MessageDialog("confirmDialog", WebSession.getString(312), WebSession.getString(321), DialogButtons.OK, DialogIcon.INFO){
 			private static final long serialVersionUID = 1L;

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java Thu Jan 29 09:15:50 2015
@@ -66,7 +66,7 @@ import com.googlecode.wicket.jquery.ui.w
 import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 
 public class RegisterDialog extends AbstractFormDialog<String> {
-	private static final long serialVersionUID = -8333305491376538792L;
+	private static final long serialVersionUID = 1L;
 	private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);
 	private DialogButton cancelBtn = new DialogButton(WebSession.getString(122));
 	private String registerLbl = WebSession.getString(121);
@@ -211,8 +211,14 @@ public class RegisterDialog extends Abst
 
 	}
 
+	@Override
+	protected void onDetach() {
+		tzModel.detach();
+		super.onDetach();
+	}
+	
 	class RegisterForm extends StatelessForm<Void> {
-		private static final long serialVersionUID = 1701373326213602431L;
+		private static final long serialVersionUID = 1L;
 		private PasswordTextField confirmPassword;
 		private PasswordTextField passwordField;
 		private RequiredTextField<String> emailField;
@@ -255,7 +261,7 @@ public class RegisterDialog extends Abst
 					getBean(StateDao.class).getStates(), new ChoiceRenderer<State>("name", "state_id")));
 			stateField.setRequired(true).setLabel(Model.of(WebSession.getString(120)));
 			add(new AjaxButton("submit") { // FAKE button so "submit-on-enter" works as expected
-				private static final long serialVersionUID = -3612671587183668912L;
+				private static final long serialVersionUID = 1L;
 
 				@Override
 				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java Thu Jan 29 09:15:50 2015
@@ -65,6 +65,7 @@ import org.apache.wicket.model.AbstractR
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.Strings;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
@@ -74,7 +75,7 @@ import com.googlecode.wicket.jquery.ui.w
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
 public class SignInDialog extends AbstractFormDialog<String> {
-	private static final long serialVersionUID = 7746996016261051947L;
+	private static final long serialVersionUID = 1L;
 	private Form<String> form;
 	private DialogButton loginBtn = new DialogButton(WebSession.getString(112));
 	private String registerLbl = WebSession.getString(123);
@@ -105,7 +106,7 @@ public class SignInDialog extends Abstra
 	protected void onInitialize() {
 		super.onInitialize();
 		add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") {
-			private static final long serialVersionUID = -249782023133645704L;
+			private static final long serialVersionUID = 1L;
 
 			@Override
             protected String $()
@@ -209,7 +210,7 @@ public class SignInDialog extends Abstra
 	}
 	
 	class SignInForm extends StatelessForm<String> {
-		private static final long serialVersionUID = 4079939497154278822L;
+		private static final long serialVersionUID = 1L;
 		private PasswordTextField passField;
 		private RequiredTextField<String> loginField;
 
@@ -232,7 +233,7 @@ public class SignInDialog extends Abstra
 						, ldaps, new ChoiceRenderer<LdapConfig>("name", "ldapConfigId"))).setVisible(ldaps.size() > 1));
 			add(new CheckBox("rememberMe", new PropertyModel<Boolean>(SignInDialog.this, "rememberMe")).setOutputMarkupId(true));
 			add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
-				private static final long serialVersionUID = -3612671587183668912L;
+				private static final long serialVersionUID = 1L;
 
 				@Override
 				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
@@ -245,7 +246,7 @@ public class SignInDialog extends Abstra
 				}
 			});
 			add(new AjaxLink<Void>("forget") {
-				private static final long serialVersionUID = -7497568829491287604L;
+				private static final long serialVersionUID = 1L;
 
 				@Override
 				public void onClick(AjaxRequestTarget target) {
@@ -254,7 +255,7 @@ public class SignInDialog extends Abstra
 				}
 			});
 			add(new Link<Void>("netTest") {
-				private static final long serialVersionUID = -9055312659797800331L;
+				private static final long serialVersionUID = 1L;
 
 				@Override
 				public void onClick() {
@@ -272,11 +273,9 @@ public class SignInDialog extends Abstra
 					protected void populateItem(final ListItem<OAuthServer> item) {
 						Button btn = new Button("oauthBtn");
 						Image icon = new Image("icon", new Model<String>());
-						icon.setVisible(item.getModelObject().getIconUrl() != null && 
-								!"".equals(item.getModelObject().getIconUrl()));
+						icon.setVisible(!Strings.isEmpty(item.getModelObject().getIconUrl()));
 						icon.add(new AttributeModifier("src", new AbstractReadOnlyModel<String>() {
-
-							private static final long serialVersionUID = 7257002837120721882L;
+							private static final long serialVersionUID = 1L;
 
 							@Override
 							public String getObject() {

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java Thu Jan 29 09:15:50 2015
@@ -126,6 +126,12 @@ public class InstallWizard extends Wizar
 		return bBar.replace(finish).setOutputMarkupId(true);
 	}
 	
+	@Override
+	protected void onDetach() {
+		model.detach();
+		super.onDetach();
+	}
+	
 	private abstract class BaseStep extends DynamicWizardStep {
 		private static final long serialVersionUID = 1L;
 
@@ -393,7 +399,7 @@ public class InstallWizard extends Wizar
 	}
 	
 	private static class SelectOption implements Serializable {
-		private static final long serialVersionUID = 2559982745410615390L;
+		private static final long serialVersionUID = 1L;
 		private static SelectOption NO = new SelectOption("0", "No");
 		private static SelectOption NO_TEXT = new SelectOption("no", "No");
 		private static SelectOption YES = new SelectOption("1", "Yes");
@@ -409,7 +415,7 @@ public class InstallWizard extends Wizar
 	}
 
 	private abstract class WizardDropDown<T>  extends DropDownChoice<T> {
-		private static final long serialVersionUID = 8870736740532631296L;
+		private static final long serialVersionUID = 1L;
 		T option;
 		IModel<Object> propModel;
 		
@@ -418,15 +424,20 @@ public class InstallWizard extends Wizar
 			propModel = InstallWizard.this.model.bind("cfg." + id);
 			setModel(new PropertyModel<T>(this, "option"));
 		}
+		
+		@Override
+		protected void onDetach() {
+			propModel.detach();
+			super.onDetach();
+		}
 	}
 	
 	private final class TzDropDown extends WizardDropDown<String> {
 		private static final long serialVersionUID = 1L;
 
 		public void setOption() {
-			List<String> tzList = AVAILABLE_TIMEZONES;
 			String tzId = WebSession.get().getClientTZCode();
-			option = AVAILABLE_TIMEZONE_SET.contains(tzId) ? tzId : tzList.get(0);
+			option = AVAILABLE_TIMEZONE_SET.contains(tzId) ? tzId : AVAILABLE_TIMEZONES.get(0);
 		}
 		
 		public TzDropDown(String id) throws Exception {
@@ -453,7 +464,7 @@ public class InstallWizard extends Wizar
 	}
 	
 	private class SelectOptionDropDown extends WizardDropDown<SelectOption> {
-		private static final long serialVersionUID = -1433015274371279328L;
+		private static final long serialVersionUID = 1L;
 
 		SelectOptionDropDown(String id) {
 			super(id);
@@ -470,7 +481,7 @@ public class InstallWizard extends Wizar
 	}
 	
 	private final class YesNoDropDown extends SelectOptionDropDown {
-		private static final long serialVersionUID = 578375825530725477L;
+		private static final long serialVersionUID = 1L;
 		
 		YesNoDropDown(String id) {
 			super(id);
@@ -481,7 +492,7 @@ public class InstallWizard extends Wizar
 	}
 	
 	private final class YesNoTextDropDown extends SelectOptionDropDown {
-		private static final long serialVersionUID = 578375825530725477L;
+		private static final long serialVersionUID = 1L;
 		
 		YesNoTextDropDown(String id) {
 			super(id);
@@ -492,7 +503,7 @@ public class InstallWizard extends Wizar
 	}
 	
 	private final class LangDropDown extends SelectOptionDropDown {
-		private static final long serialVersionUID = -2826765890538795285L;
+		private static final long serialVersionUID = 1L;
 
 		public LangDropDown(String id) throws Exception {
 			super(id);
@@ -500,17 +511,17 @@ public class InstallWizard extends Wizar
 			
 			List<SelectOption> list = new ArrayList<SelectOption>();
 			
-			for (Integer key : allLanguagesAll.keySet()) {
-				String langName = (String) allLanguagesAll.get(key).get("name");
-				String langCode = (String) allLanguagesAll.get(key).get("code");
-				SelectOption op = new SelectOption(key.toString(), langName);
+			for (Map.Entry<Integer,Map<String,Object>> me : allLanguagesAll.entrySet()) {
+				String langName = (String) me.getValue().get("name");
+				String langCode = (String) me.getValue().get("code");
+				SelectOption op = new SelectOption(me.getKey().toString(), langName);
 				if (langCode != null) {
 					if (getSession().getLocale().toString().startsWith(langCode)) {
 						option = op;
 					}
 					list.add(op);
 				}
-				if (option == null && key.toString().equals(cfg.defaultLangId)) {
+				if (option == null && me.getKey().toString().equals(cfg.defaultLangId)) {
 					option = op;
 				}
 			}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html Thu Jan 29 09:15:50 2015
@@ -20,7 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:panel>
-		<form wicket:id="appForm">
+		<form wicket:id="appForm" class="appointmentPopUp">
 			<span wicket:id="feedback"></span>
 			<table>
 				<tr>

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java Thu Jan 29 09:15:50 2015
@@ -223,6 +223,12 @@ public class AppointmentDialog extends A
 		return object.getOwner() != null && getUserId() == object.getOwner().getUser_id();
 	}
 	
+	@Override
+	protected void onDetach() {
+		attendeesModel.detach();
+		super.onDetach();
+	}
+	
 	private class AppointmentForm extends Form<Appointment> {
 		private static final long serialVersionUID = 1L;
 		private boolean createRoom = true;
@@ -284,7 +290,6 @@ public class AppointmentDialog extends A
 		public AppointmentForm(String id, CompoundPropertyModel<Appointment> model) {
 			super(id, model);
 			setOutputMarkupId(true);
-			add(new AttributeAppender("class", new Model<String>("appointmentPopUp"), " "));
 			
 			add(feedback.setOutputMarkupId(true));
 			add(new RequiredTextField<String>("title").setLabel(Model.of(WebSession.getString(572))));

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java Thu Jan 29 09:15:50 2015
@@ -230,4 +230,12 @@ public class MessageDialog extends Abstr
 			}
 		}
 	}
+	
+	@Override
+	protected void onDetach() {
+		modelEnd.detach();
+		modelStart.detach();
+		modelTo.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java Thu Jan 29 09:15:50 2015
@@ -410,7 +410,7 @@ public class MessagesContactsPanel exten
 			}
 		};
 		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dv) {
-			private static final long serialVersionUID = 5097048616003411362L;
+			private static final long serialVersionUID = 1L;
 
 			@Override
 			protected void onEvent(AjaxRequestTarget target) {
@@ -553,7 +553,7 @@ public class MessagesContactsPanel exten
 				}
 				item.add(new Label("name", getName(uc)));	
 				item.add(new WebMarkupContainer("accept").add(new AjaxEventBehavior("onclick") {
-					private static final long serialVersionUID = 7223188816617664993L;
+					private static final long serialVersionUID = 1L;
 
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
@@ -618,4 +618,10 @@ public class MessagesContactsPanel exten
 		});
 	}
 
+	@Override
+	protected void onDetach() {
+		foldersModel.detach();
+		selectedFolderModel.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java Thu Jan 29 09:15:50 2015
@@ -279,6 +279,14 @@ public class RecordingsPanel extends Use
 		}
 	}
 	
+	@Override
+	protected void onDetach() {
+		rm.detach();
+		homeSize.detach();
+		publicSize.detach();
+		super.onDetach();
+	}
+	
 	class MyRecordingTreeProvider extends RecordingTreeProvider {
 		private static final long serialVersionUID = 1L;
 
@@ -349,6 +357,5 @@ public class RecordingsPanel extends Use
 			// TODO LDM should be used
 			return Model.of(object);
 		}
-		
 	}
 }

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java Thu Jan 29 09:15:50 2015
@@ -73,6 +73,12 @@ public class VideoPlayer extends Panel {
 		return this;
 	}
 	
+	@Override
+	protected void onDetach() {
+		playerModel.detach();
+		super.onDetach();
+	}
+	
 	private static class OmHtml5Video extends Html5Video {
 		private static final long serialVersionUID = 1L;
 		Long recId = null;

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java Thu Jan 29 09:15:50 2015
@@ -20,6 +20,8 @@ package org.apache.openmeetings.web.user
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -46,7 +48,7 @@ import org.apache.wicket.util.io.IOUtils
 import com.googlecode.wicket.jquery.ui.form.button.Button;
 
 public class RoomsPanel extends UserPanel {
-	private static final long serialVersionUID = -892281210307880052L;
+	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
 	private final WebMarkupContainer details = new WebMarkupContainer("details");
 	private final ListView<Client> clients;
@@ -59,7 +61,7 @@ public class RoomsPanel extends UserPane
 	public RoomsPanel(String id, List<Room> rooms) {
 		super(id);
 		add(new ListView<Room>("list", rooms) {
-			private static final long serialVersionUID = 9189085478336224890L;
+			private static final long serialVersionUID = 1L;
 
 			@Override
 			protected void populateItem(ListItem<Room> item) {
@@ -75,19 +77,17 @@ public class RoomsPanel extends UserPane
 					}
 				}));
 				roomContainer.add(new Label("roomName", r.getName()));
-				final IModel<Integer> curUsersModel = new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getRooms_id()).size()); 
-				final Label curUsers = new Label("curUsers", curUsersModel);
+				final Label curUsers = new Label("curUsers", new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getRooms_id()).size()));
 				roomContainer.add(curUsers.setOutputMarkupId(true));
 				roomContainer.add(new Label("totalUsers", r.getNumberOfPartizipants()));
 				item.add(new Button("enter").add(new RoomEnterBehavior(r.getRooms_id())));
 				roomContainer.add(new AjaxLink<Void>("refresh") {
-					private static final long serialVersionUID = -3426813755917489787L;
+					private static final long serialVersionUID = 1L;
 
 					@Override
 					public void onClick(AjaxRequestTarget target) {
 						roomId = r.getRooms_id();
-						curUsersModel.setObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getRooms_id()).size());
-						target.add(curUsers);
+						target.add(curUsers.setDefaultModelObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getRooms_id()).size()));
 						updateRoomDetails(target);
 					}
 				});
@@ -123,9 +123,17 @@ public class RoomsPanel extends UserPane
 							uri = Application.getBean(UserDao.class).get(userId > 0 ? userId : -userId).getPictureuri();
 						}
 						File img = OmFileHelper.getUserProfilePicture(userId, uri);
+						InputStream is = null;
 						try {
-							return IOUtils.toByteArray(new FileInputStream(img));
+							is = new FileInputStream(img);
+							return IOUtils.toByteArray(is);
 						} catch (Exception e) {
+						} finally {
+							if (is != null) {
+								try {
+									is.close();
+								} catch (IOException e) {}
+							}
 						}
 						return null;
 					}
@@ -146,4 +154,12 @@ public class RoomsPanel extends UserPane
 		roomComment.setObject(room.getComment());
 		target.add(clientsContainer, details);
 	}
+	
+	@Override
+	protected void onDetach() {
+		roomID.detach();
+		roomName.detach();
+		roomComment.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java Thu Jan 29 09:15:50 2015
@@ -201,6 +201,11 @@ public class BackupPanel extends AdminPa
 			add(new Label("cmdLineDesc", WebSession.getString(1505)).setEscapeModelStrings(false));
 		}
 
+		@Override
+		protected void onDetach() {
+			includeFilesInBackup.detach();
+			super.onDetach();
+		}
 		private class BackupProcess implements Runnable {
 			private BackupExport backup;
 			private File backupDir;

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java Thu Jan 29 09:15:50 2015
@@ -383,4 +383,10 @@ public class RoomForm extends AdminBaseF
 		updateClients(target);
 		target.appendJavaScript("omRoomPanelInit();");
 	}
+	
+	@Override
+	protected void onDetach() {
+		moderator2add.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html Thu Jan 29 09:15:50 2015
@@ -86,7 +86,7 @@
 				            </div>
 				            <div class="formelement">
 				                <div class="info-text"><wicket:ommessage key="828" /></div>
-				                <label><wicket:ommessage key="191" /></label><input type="hidden" class="input" wicket:id="roomOrganisations" style="height: 80px"/>
+				                <label><wicket:ommessage key="191" /></label><input type="hidden" class="input" wicket:id="roomOrganisations" style="max-height: 80px"/>
 				            </div>
 				        </fieldset>
 				        

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java Thu Jan 29 09:15:50 2015
@@ -50,8 +50,7 @@ public class ServerForm extends AdminBas
 	private final WebMarkupContainer listContainer;
 	private static final long serialVersionUID = 1L;
 
-	public ServerForm(String id, WebMarkupContainer listContainer,
-			final Server server) {
+	public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
 		super(id, new CompoundPropertyModel<Server>(server));
 		setOutputMarkupId(true);
 		this.listContainer = listContainer;
@@ -79,10 +78,8 @@ public class ServerForm extends AdminBas
 
 	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
-		Application.getBean(ServerDao.class).update(getModelObject(),
-				WebSession.getUserId());
-		Server server = Application.getBean(ServerDao.class).get(
-				getModelObject().getId());
+		Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
+		Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
 		setModelObject(server);
 		hideNewRecord();
 		target.add(this);
@@ -104,8 +101,7 @@ public class ServerForm extends AdminBas
 	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
 		Server server = getModelObject();
 		if (server.getId() > 0) {
-			server = Application.getBean(ServerDao.class).get(
-					server.getId());
+			server = Application.getBean(ServerDao.class).get(server.getId());
 		} else {
 			server = new Server();
 		}
@@ -116,8 +112,7 @@ public class ServerForm extends AdminBas
 
 	@Override
 	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
-		Application.getBean(ServerDao.class).delete(getModelObject(),
-				WebSession.getUserId());
+		Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
 		this.setModelObject(new Server());
 		target.add(listContainer);
 		target.add(this);

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/MessageTagHandler.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/MessageTagHandler.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/MessageTagHandler.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/MessageTagHandler.java Thu Jan 29 09:15:50 2015
@@ -35,8 +35,7 @@ import org.apache.wicket.markup.parser.f
 import org.apache.wicket.markup.resolver.IComponentResolver;
 import org.apache.wicket.util.string.Strings;
 
-public class MessageTagHandler extends AbstractMarkupFilter implements
-		IComponentResolver {
+public class MessageTagHandler extends AbstractMarkupFilter implements IComponentResolver {
 	/** */
 	private static final long serialVersionUID = 1L;
 

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java Thu Jan 29 09:15:50 2015
@@ -166,4 +166,10 @@ public class FileItemTree<T extends File
 			selectedItem.setObject(null);
 		}
 	}
+	
+	@Override
+	protected void onDetach() {
+		selectedItem.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Thu Jan 29 09:15:50 2015
@@ -166,4 +166,12 @@ public abstract class FileTreePanel exte
 	public abstract void createFolder(String name);
 
 	public abstract void updateSizes();
+	
+	@Override
+	protected void onDetach() {
+		selectedFile.detach();
+		homeSize.detach();
+		publicSize.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java Thu Jan 29 09:15:50 2015
@@ -130,6 +130,12 @@ public class ForgetPasswordDialog extend
 					}
 				}
 			}
+			
+			@Override
+			protected void onDetach() {
+				lblModel.detach();
+				super.onDetach();
+			}
 		});
 		confirmDialog = new MessageDialog("confirmDialog", WebSession.getString(312), WebSession.getString(321), DialogButtons.OK, DialogIcon.INFO){
 			private static final long serialVersionUID = 1L;

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java Thu Jan 29 09:15:50 2015
@@ -211,6 +211,11 @@ public class RegisterDialog extends Abst
 
 	}
 
+	@Override
+	protected void onDetach() {
+		tzModel.detach();
+		super.onDetach();
+	}
 	class RegisterForm extends StatelessForm<Void> {
 		private static final long serialVersionUID = 1L;
 		private PasswordTextField confirmPassword;

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java Thu Jan 29 09:15:50 2015
@@ -65,6 +65,7 @@ import org.apache.wicket.model.AbstractR
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.Strings;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
@@ -272,8 +273,7 @@ public class SignInDialog extends Abstra
 					protected void populateItem(final ListItem<OAuthServer> item) {
 						Button btn = new Button("oauthBtn");
 						Image icon = new Image("icon", new Model<String>());
-						icon.setVisible(item.getModelObject().getIconUrl() != null && 
-								!"".equals(item.getModelObject().getIconUrl()));
+						icon.setVisible(!Strings.isEmpty(item.getModelObject().getIconUrl()));
 						icon.add(new AttributeModifier("src", new AbstractReadOnlyModel<String>() {
 
 							private static final long serialVersionUID = 1L;

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java Thu Jan 29 09:15:50 2015
@@ -125,6 +125,12 @@ public class InstallWizard extends Wizar
 		return bBar.replace(finish).setOutputMarkupId(true);
 	}
 	
+	@Override
+	protected void onDetach() {
+		model.detach();
+		super.onDetach();
+	}
+	
 	private abstract class BaseStep extends DynamicWizardStep {
 		private static final long serialVersionUID = 1L;
 
@@ -417,6 +423,12 @@ public class InstallWizard extends Wizar
 			propModel = InstallWizard.this.model.bind("cfg." + id);
 			setModel(new PropertyModel<T>(this, "option"));
 		}
+		
+		@Override
+		protected void onDetach() {
+			propModel.detach();
+			super.onDetach();
+		}
 	}
 	
 	private final class TzDropDown extends WizardDropDown<String> {

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java Thu Jan 29 09:15:50 2015
@@ -301,4 +301,14 @@ public class InvitationDialog extends Ab
 			}
 		}
 	}
+	
+	@Override
+	protected void onDetach() {
+		subject.detach();
+		message.detach();
+		tzId.detach();
+		lang.detach();
+		modelTo.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java Thu Jan 29 09:15:50 2015
@@ -363,5 +363,12 @@ public class PollResultsDialog extends A
 			Chart<?> chart = SIMPLE_CHART.equals(chartType.getModelObject()) ? barChart(poll) : pieChart(poll);
 			target.appendJavaScript(getScript(chart));
 		}
+		
+		@Override
+		protected void onDetach() {
+			name.detach();
+			count.detach();
+			super.onDetach();
+		}
 	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java Thu Jan 29 09:15:50 2015
@@ -126,6 +126,11 @@ public class VoteDialog extends Abstract
 		RoomPanel.broadcast(new RoomMessage(roomId, getUserId(), RoomMessage.Type.voted));
 	}
 	
+	@Override
+	protected void onDetach() {
+		user.detach();
+		super.onDetach();
+	}
 	private class PollAnswerForm extends Form<RoomPollAnswer> {
 		private static final long serialVersionUID = 1L;
 		private final WebMarkupContainer typeBool = new WebMarkupContainer("typeBool");

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java Thu Jan 29 09:15:50 2015
@@ -215,6 +215,12 @@ public class AppointmentDialog extends A
 		return object.getOwner() != null && getUserId() == object.getOwner().getId();
 	}
 	
+	@Override
+	protected void onDetach() {
+		attendeesModel.detach();
+		super.onDetach();
+	}
+	
 	private class AppointmentForm extends Form<Appointment> {
 		private static final long serialVersionUID = 1L;
 		private boolean createRoom = true;

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java Thu Jan 29 09:15:50 2015
@@ -230,4 +230,12 @@ public class MessageDialog extends Abstr
 			}
 		}
 	}
+	
+	@Override
+	protected void onDetach() {
+		modelEnd.detach();
+		modelStart.detach();
+		modelTo.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java Thu Jan 29 09:15:50 2015
@@ -619,4 +619,10 @@ public class MessagesContactsPanel exten
 		});
 	}
 
+	@Override
+	protected void onDetach() {
+		foldersModel.detach();
+		selectedFolderModel.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java Thu Jan 29 09:15:50 2015
@@ -73,6 +73,12 @@ public class VideoPlayer extends Panel {
 		return this;
 	}
 	
+	@Override
+	protected void onDetach() {
+		playerModel.detach();
+		super.onDetach();
+	}
+	
 	private static class OmHtml5Video extends Html5Video {
 		private static final long serialVersionUID = 1L;
 		Long recId = null;

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java?rev=1655557&r1=1655556&r2=1655557&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java Thu Jan 29 09:15:50 2015
@@ -77,8 +77,7 @@ public class RoomsPanel extends UserPane
 					}
 				}));
 				roomContainer.add(new Label("roomName", r.getName()));
-				final IModel<Integer> curUsersModel = new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size()); 
-				final Label curUsers = new Label("curUsers", curUsersModel);
+				final Label curUsers = new Label("curUsers", new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size()));
 				roomContainer.add(curUsers.setOutputMarkupId(true));
 				roomContainer.add(new Label("totalUsers", r.getNumberOfPartizipants()));
 				item.add(new Button("enter").add(new RoomEnterBehavior(r.getId())));
@@ -88,9 +87,7 @@ public class RoomsPanel extends UserPane
 					@Override
 					public void onClick(AjaxRequestTarget target) {
 						roomId = r.getId();
-						curUsersModel.setObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size());
-						target.add(curUsers);
-						updateRoomDetails(target);
+						target.add(curUsers.setDefaultModelObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size()));						updateRoomDetails(target);
 					}
 				});
 			}
@@ -156,4 +153,12 @@ public class RoomsPanel extends UserPane
 		roomComment.setObject(room.getComment());
 		target.add(clientsContainer, details);
 	}
+	
+	@Override
+	protected void onDetach() {
+		roomID.detach();
+		roomName.detach();
+		roomComment.detach();
+		super.onDetach();
+	}
 }