diff options
| author | Robert Greig <rgreig@apache.org> | 2007-03-28 09:30:49 +0000 |
|---|---|---|
| committer | Robert Greig <rgreig@apache.org> | 2007-03-28 09:30:49 +0000 |
| commit | 9180adf0265c0e31fa217836915914c40731772f (patch) | |
| tree | 7ad4a36fcadcdcd24fd9b83aa0395a9a8bac6d49 /java | |
| parent | 67d4453185722dfdf6d5f88c53ab30a9d97439d4 (diff) | |
| download | qpid-python-9180adf0265c0e31fa217836915914c40731772f.tar.gz | |
Reversed accidental replacing of the word 'initialize' in comments to 'establishConnection' through a method refactoring.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@523245 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
3 files changed, 432 insertions, 371 deletions
diff --git a/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java b/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java index 77b81f4bb2..931c15a664 100644 --- a/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java +++ b/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java @@ -1,44 +1,45 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * http://www.apache.org/licenses/LICENSE-2.0 * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. * */ package org.apache.log4j; -import org.apache.log4j.helpers.OptionConverter; -import org.apache.log4j.helpers.CountingQuietWriter; -import org.apache.log4j.helpers.LogLog; -import org.apache.log4j.spi.LoggingEvent; -import org.apache.qpid.framing.FieldTable; - +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.Writer; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Executor; import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import java.util.zip.GZIPOutputStream; -import java.text.SimpleDateFormat; -import java.io.IOException; -import java.io.Writer; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; + +import org.apache.log4j.helpers.CountingQuietWriter; +import org.apache.log4j.helpers.LogLog; +import org.apache.log4j.helpers.OptionConverter; +import org.apache.log4j.spi.LoggingEvent; + +import org.apache.qpid.framing.FieldTable; /** * <p>CompositeRollingAppender combines RollingFileAppender and DailyRollingFileAppender<br> It can function as either @@ -83,7 +84,7 @@ public class QpidCompositeRollingAppender extends FileAppender static final int BY_DATE = 2; static final int BY_COMPOSITE = 3; - //Not currently used + // Not currently used static final String S_BY_SIZE = "Size"; static final String S_BY_DATE = "Date"; static final String S_BY_COMPOSITE = "Composite"; @@ -146,7 +147,6 @@ public class QpidCompositeRollingAppender extends FileAppender /** FileName provided in configuration. Used for rolling properly */ protected String baseFileName; - /** Do we want to .gz our backup files. */ protected boolean compress = false; @@ -163,15 +163,13 @@ public class QpidCompositeRollingAppender extends FileAppender /** The default constructor does nothing. */ public QpidCompositeRollingAppender() - { - } + { } /** * Instantiate a <code>CompositeRollingAppender</code> and open the file designated by <code>filename</code>. The * opened filename will become the ouput destination for this appender. */ - public QpidCompositeRollingAppender(Layout layout, String filename, - String datePattern) throws IOException + public QpidCompositeRollingAppender(Layout layout, String filename, String datePattern) throws IOException { this(layout, filename, datePattern, true); } @@ -183,8 +181,7 @@ public class QpidCompositeRollingAppender extends FileAppender * <p>If the <code>append</code> parameter is true, the file will be appended to. Otherwise, the file desginated by * <code>filename</code> will be truncated before being opened. */ - public QpidCompositeRollingAppender(Layout layout, String filename, boolean append) - throws IOException + public QpidCompositeRollingAppender(Layout layout, String filename, boolean append) throws IOException { super(layout, filename, append); } @@ -193,8 +190,8 @@ public class QpidCompositeRollingAppender extends FileAppender * Instantiate a CompositeRollingAppender and open the file designated by <code>filename</code>. The opened filename * will become the ouput destination for this appender. */ - public QpidCompositeRollingAppender(Layout layout, String filename, - String datePattern, boolean append) throws IOException + public QpidCompositeRollingAppender(Layout layout, String filename, String datePattern, boolean append) + throws IOException { super(layout, filename, append); this.datePattern = datePattern; @@ -305,7 +302,7 @@ public class QpidCompositeRollingAppender extends FileAppender qw = new CountingQuietWriter(writer, errorHandler); } - //Taken verbatum from DailyRollingFileAppender + // Taken verbatum from DailyRollingFileAppender int computeCheckPeriod() { RollingCalendar c = new RollingCalendar(); @@ -319,17 +316,18 @@ public class QpidCompositeRollingAppender extends FileAppender c.setType(i); Date next = new Date(c.getNextCheckMillis(epoch)); String r1 = sdf.format(next); - //LogLog.debug("Type = "+i+", r0 = "+r0+", r1 = "+r1); - if (r0 != null && r1 != null && !r0.equals(r1)) + // LogLog.debug("Type = "+i+", r0 = "+r0+", r1 = "+r1); + if ((r0 != null) && (r1 != null) && !r0.equals(r1)) { return i; } } } + return TOP_OF_TROUBLE; // Deliberately head for trouble... } - //Now for the new stuff + // Now for the new stuff /** * Handles append time behavior for CompositeRollingAppender. This checks if a roll over either by date (checked * first) or time (checked second) is need and then appends to the file last. @@ -351,7 +349,7 @@ public class QpidCompositeRollingAppender extends FileAppender if (rollSize) { - if ((fileName != null) && ((CountingQuietWriter) qw).getCount() >= maxFileSize) + if ((fileName != null) && (((CountingQuietWriter) qw).getCount() >= maxFileSize)) { rollOverSize(); } @@ -410,20 +408,24 @@ public class QpidCompositeRollingAppender extends FileAppender rollingStyle = style; switch (rollingStyle) { - case BY_SIZE: - rollDate = false; - rollSize = true; - break; - case BY_DATE: - rollDate = true; - rollSize = false; - break; - case BY_COMPOSITE: - rollDate = true; - rollSize = true; - break; - default: - errorHandler.error("Invalid rolling Style, use 1 (by size only), 2 (by date only) or 3 (both)"); + + case BY_SIZE: + rollDate = false; + rollSize = true; + break; + + case BY_DATE: + rollDate = true; + rollSize = false; + break; + + case BY_COMPOSITE: + rollDate = true; + rollSize = true; + break; + + default: + errorHandler.error("Invalid rolling Style, use 1 (by size only), 2 (by date only) or 3 (both)"); } } @@ -439,7 +441,7 @@ public class QpidCompositeRollingAppender extends FileAppender rollingStyle = BY_COMPOSITE; } } - */ + */ public boolean getStaticLogFileName() { return staticLogFileName; @@ -477,11 +479,10 @@ public class QpidCompositeRollingAppender extends FileAppender { executor = Executors.newFixedThreadPool(1); - compressor = new Compressor(); + compressor = new Compressor(); } } - public boolean getZeroBased() { return zeroBased; @@ -504,6 +505,7 @@ public class QpidCompositeRollingAppender extends FileAppender { td.mkdirs(); } + backupFilesToPath = path; } @@ -519,9 +521,10 @@ public class QpidCompositeRollingAppender extends FileAppender { curSizeRollBackups = -1; } + curTimeRollBackups = 0; - //part A starts here + // part A starts here String filter; if (staticLogFileName || !rollDate) { @@ -556,9 +559,9 @@ public class QpidCompositeRollingAppender extends FileAppender if (staticLogFileName) { int endLength = files[i].length() - index; - if (baseFileName.length() + endLength != files[i].length()) + if ((baseFileName.length() + endLength) != files[i].length()) { - //file is probably scheduledFilename + .x so I don't care + // file is probably scheduledFilename + .x so I don't care continue; } } @@ -574,18 +577,19 @@ public class QpidCompositeRollingAppender extends FileAppender } catch (Exception e) { - //this happens when file.log -> file.log.yyyy-mm-dd which is normal - //when staticLogFileName == false + // this happens when file.log -> file.log.yyyy-mm-dd which is normal + // when staticLogFileName == false LogLog.debug("Encountered a backup file not ending in .x " + files[i]); } } } + LogLog.debug("curSizeRollBackups starts at: " + curSizeRollBackups); - //part A ends here + // part A ends here - //part B not yet implemented + // part B not yet implemented - //part C + // part C if (staticLogFileName && rollDate) { File old = new File(baseFileName); @@ -600,41 +604,41 @@ public class QpidCompositeRollingAppender extends FileAppender } } } + LogLog.debug("curSizeRollBackups after rollOver at: " + curSizeRollBackups); - //part C ends here + // part C ends here } /** * Sets initial conditions including date/time roll over information, first check, scheduledFilename, and calls - * <code>existingInit</code> to establishConnection the current # of backups. + * <code>existingInit</code> to initialize the current # of backups. */ public void activateOptions() { - //REMOVE removed rollDate from boolean to enable Alex's change + // REMOVE removed rollDate from boolean to enable Alex's change if (datePattern != null) { now.setTime(System.currentTimeMillis()); sdf = new SimpleDateFormat(datePattern); int type = computeCheckPeriod(); - //printPeriodicity(type); + // printPeriodicity(type); rc.setType(type); - //next line added as this removes the name check in rollOver + // next line added as this removes the name check in rollOver nextCheck = rc.getNextCheckMillis(now); } else { if (rollDate) { - LogLog.error("Either DatePattern or rollingStyle options are not set for [" + - name + "]."); + LogLog.error("Either DatePattern or rollingStyle options are not set for [" + name + "]."); } } existingInit(); - if (rollDate && fileName != null && scheduledFilename == null) + if (rollDate && (fileName != null) && (scheduledFilename == null)) { scheduledFilename = fileName + sdf.format(now); } @@ -662,7 +666,7 @@ public class QpidCompositeRollingAppender extends FileAppender this.closeFile(); // keep windows happy. - //delete the old stuff here + // delete the old stuff here if (staticLogFileName) { @@ -670,23 +674,25 @@ public class QpidCompositeRollingAppender extends FileAppender if (datePattern == null) { errorHandler.error("Missing DatePattern option in rollOver()."); + return; } - //is the new file name equivalent to the 'current' one - //something has gone wrong if we hit this -- we should only - //roll over if the new file will be different from the old + // is the new file name equivalent to the 'current' one + // something has gone wrong if we hit this -- we should only + // roll over if the new file will be different from the old String dateFormat = sdf.format(now); if (scheduledFilename.equals(fileName + dateFormat)) { errorHandler.error("Compare " + scheduledFilename + " : " + fileName + dateFormat); + return; } // close current file, and rename it to datedFilename this.closeFile(); - //we may have to roll over a large number of backups here + // we may have to roll over a large number of backups here String from, to; for (int i = 1; i <= curSizeRollBackups; i++) { @@ -709,9 +715,9 @@ public class QpidCompositeRollingAppender extends FileAppender { // This will also close the file. This is OK since multiple // close operations are safe. - curSizeRollBackups = 0; //We're cleared out the old date and are ready for the new + curSizeRollBackups = 0; // We're cleared out the old date and are ready for the new - //new scheduled name + // new scheduled name scheduledFilename = fileName + sdf.format(now); this.setFile(baseFileName, false); } @@ -734,8 +740,10 @@ public class QpidCompositeRollingAppender extends FileAppender { LogLog.debug("Attempting to compress file with same output name."); } + return; } + File target = new File(to); if (target.exists()) { @@ -755,10 +763,10 @@ public class QpidCompositeRollingAppender extends FileAppender file.renameTo(target); } } + LogLog.debug(from + " -> " + to); } - protected void compress(String file) { File f = new File(file); @@ -773,6 +781,7 @@ public class QpidCompositeRollingAppender extends FileAppender { _compress.offer(new CompressJob(from, target)); } + startCompression(); } else @@ -805,7 +814,7 @@ public class QpidCompositeRollingAppender extends FileAppender * <p>If the maximum number of size based backups is reached (<code>curSizeRollBackups == maxSizeRollBackups</code) * then the oldest file is deleted -- it's index determined by the sign of countDirection.<br> If * <code>countDirection</code> < 0, then files {<code>File.1</code>, ..., <code>File.curSizeRollBackups -1</code>} - * are renamed to {<code>File.2</code>, ..., <code>File.curSizeRollBackups</code>}. Moreover, <code>File</code> is + * are renamed to {<code>File.2</code>, ..., <code>File.curSizeRollBackups</code>}. Moreover, <code>File</code> is * renamed <code>File.1</code> and closed.<br> * * A new file is created to receive further log output. @@ -851,20 +860,20 @@ public class QpidCompositeRollingAppender extends FileAppender // Rename fileName to fileName.1 rollFile(fileName, fileName + ".1", compress); - } //REMOVE This code branching for Alexander Cerna's request + } // REMOVE This code branching for Alexander Cerna's request else if (countDirection == 0) { - //rollFile based on date pattern + // rollFile based on date pattern curSizeRollBackups++; now.setTime(System.currentTimeMillis()); scheduledFilename = fileName + sdf.format(now); rollFile(fileName, scheduledFilename, compress); } else - { //countDirection > 0 - if (curSizeRollBackups >= maxSizeRollBackups && maxSizeRollBackups > 0) + { // countDirection > 0 + if ((curSizeRollBackups >= maxSizeRollBackups) && (maxSizeRollBackups > 0)) { - //delete the first and keep counting up. + // delete the first and keep counting up. int oldestFileIndex = curSizeRollBackups - maxSizeRollBackups + 1; deleteFile(fileName + '.' + oldestFileIndex); } @@ -930,6 +939,7 @@ public class QpidCompositeRollingAppender extends FileAppender { out.write(buf, 0, len); } + in.close(); // Complete the GZIP file @@ -944,6 +954,7 @@ public class QpidCompositeRollingAppender extends FileAppender { target.delete(); } + rollFile(from.getPath(), to.getPath(), false); } } diff --git a/java/integrationtests/src/main/java/org/apache/qpid/util/ClasspathScanner.java b/java/integrationtests/src/main/java/org/apache/qpid/util/ClasspathScanner.java index b97aebe001..bad49060ca 100644 --- a/java/integrationtests/src/main/java/org/apache/qpid/util/ClasspathScanner.java +++ b/java/integrationtests/src/main/java/org/apache/qpid/util/ClasspathScanner.java @@ -33,7 +33,7 @@ import org.apache.log4j.Logger; *
* <p/>In order to test whether a class implements an interface or extends a class, the class must be loaded (unless
* the class files were to be scanned directly). Using this collector can cause problems when it scans the classpath,
- * because loading classes will establishConnection their statics, which in turn may cause undesired side effects. For this
+ * because loading classes will initialize their statics, which in turn may cause undesired side effects. For this
* reason, the collector should always be used with a regular expression, through which the class file names are
* filtered, and only those that pass this filter will be tested. For example, if you define tests in classes that
* end with the keyword "Test" then use the regular expression "Test$" to match this.
@@ -61,10 +61,10 @@ public class ClasspathScanner * @return All the classes that match this collector.
*/
public static <T> Collection<Class<? extends T>> getMatches(Class<T> matchingClass, String matchingRegexp,
- boolean beanOnly)
+ boolean beanOnly)
{
log.debug("public static <T> Collection<Class<? extends T>> getMatches(Class<T> matchingClass = " + matchingClass
- + ", String matchingRegexp = " + matchingRegexp + ", boolean beanOnly = " + beanOnly + "): called");
+ + ", String matchingRegexp = " + matchingRegexp + ", boolean beanOnly = " + beanOnly + "): called");
// Build a compiled regular expression from the pattern to match.
Pattern matchPattern = Pattern.compile(matchingRegexp);
@@ -95,11 +95,11 @@ public class ClasspathScanner * iteration.
*/
private static <T> void gatherFiles(File classRoot, String classFileName, Map<String, Class<? extends T>> result,
- Pattern matchPattern, Class<? extends T> matchClass)
+ Pattern matchPattern, Class<? extends T> matchClass)
{
log.debug("private static <T> void gatherFiles(File classRoot = " + classRoot + ", String classFileName = "
- + classFileName + ", Map<String, Class<? extends T>> result, Pattern matchPattern = " + matchPattern
- + ", Class<? extends T> matchClass = " + matchClass + "): called");
+ + classFileName + ", Map<String, Class<? extends T>> result, Pattern matchPattern = " + matchPattern
+ + ", Class<? extends T> matchClass = " + matchClass + "): called");
File thisRoot = new File(classRoot, classFileName);
diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java index 7fe7c80734..a861405d30 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,8 +20,6 @@ */ package org.apache.qpid.management.ui.views; -import static org.apache.qpid.management.ui.Constants.*; - import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -29,12 +27,14 @@ import java.util.HashMap; import java.util.List; import org.apache.qpid.management.ui.ApplicationRegistry; +import static org.apache.qpid.management.ui.Constants.*; import org.apache.qpid.management.ui.ManagedBean; import org.apache.qpid.management.ui.ManagedServer; import org.apache.qpid.management.ui.ServerRegistry; import org.apache.qpid.management.ui.exceptions.InfoRequiredException; import org.apache.qpid.management.ui.jmx.JMXServerRegistry; import org.apache.qpid.management.ui.jmx.MBeanUtility; + import org.eclipse.jface.preference.PreferenceStore; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; @@ -48,6 +48,7 @@ import org.eclipse.jface.viewers.TreeExpansionEvent; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; + import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; @@ -62,6 +63,7 @@ import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; + import org.eclipse.ui.part.ViewPart; /** @@ -71,29 +73,29 @@ import org.eclipse.ui.part.ViewPart; */ public class NavigationView extends ViewPart { - public static final String ID = "org.apache.qpid.management.ui.navigationView"; + public static final String ID = "org.apache.qpid.management.ui.navigationView"; public static final String INI_FILENAME = System.getProperty("user.home") + File.separator + "qpidManagementConsole.ini"; - + private static final String INI_SERVERS = "Servers"; private static final String INI_QUEUES = QUEUE + "s"; private static final String INI_CONNECTIONS = CONNECTION + "s"; private static final String INI_EXCHANGES = EXCHANGE + "s"; - + private TreeViewer _treeViewer = null; private TreeObject _rootNode = null; private TreeObject _serversRootNode = null; - + private PreferenceStore _preferences; // Map of connected servers private HashMap<ManagedServer, TreeObject> _managedServerMap = new HashMap<ManagedServer, TreeObject>(); - + private void createTreeViewer(Composite parent) { _treeViewer = new TreeViewer(parent); _treeViewer.setContentProvider(new ContentProviderImpl()); - _treeViewer.setLabelProvider(new LabelProviderImpl()); + _treeViewer.setLabelProvider(new LabelProviderImpl()); _treeViewer.setSorter(new ViewerSorterImpl()); - + // layout the tree viewer below the label field, to cover the area GridData layoutData = new GridData(); layoutData = new GridData(); @@ -103,118 +105,124 @@ public class NavigationView extends ViewPart layoutData.verticalAlignment = GridData.FILL; _treeViewer.getControl().setLayoutData(layoutData); _treeViewer.setUseHashlookup(true); - + createListeners(); } - + /** * Creates listeners for the JFace treeviewer */ private void createListeners() { - _treeViewer.addDoubleClickListener(new IDoubleClickListener() { + _treeViewer.addDoubleClickListener(new IDoubleClickListener() + { public void doubleClick(DoubleClickEvent event) { - IStructuredSelection ss = (IStructuredSelection)event.getSelection(); - if (ss == null || ss.getFirstElement() == null) + IStructuredSelection ss = (IStructuredSelection) event.getSelection(); + if ((ss == null) || (ss.getFirstElement() == null)) { return; } + boolean state = _treeViewer.getExpandedState(ss.getFirstElement()); _treeViewer.setExpandedState(ss.getFirstElement(), !state); } }); - - _treeViewer.addTreeListener(new ITreeViewerListener() { - public void treeExpanded(TreeExpansionEvent event) - { - _treeViewer.setExpandedState(event.getElement(), true); - // Following will cause the selection event to be sent, so commented - //_treeViewer.setSelection(new StructuredSelection(event.getElement())); - _treeViewer.refresh(); - } - public void treeCollapsed(TreeExpansionEvent event) + _treeViewer.addTreeListener(new ITreeViewerListener() { - _treeViewer.setExpandedState(event.getElement(), false); - _treeViewer.refresh(); - } - }); - + public void treeExpanded(TreeExpansionEvent event) + { + _treeViewer.setExpandedState(event.getElement(), true); + // Following will cause the selection event to be sent, so commented + // _treeViewer.setSelection(new StructuredSelection(event.getElement())); + _treeViewer.refresh(); + } + + public void treeCollapsed(TreeExpansionEvent event) + { + _treeViewer.setExpandedState(event.getElement(), false); + _treeViewer.refresh(); + } + }); + // This listener is for popup menu, which pops up if a queue,exchange or connection is selected // with right click. - _treeViewer.getTree().addListener(SWT.MenuDetect, new Listener () { - Display display = getSite().getShell().getDisplay(); - final Shell shell = new Shell (display); - - public void handleEvent(Event event) + _treeViewer.getTree().addListener(SWT.MenuDetect, new Listener() { - Tree widget = (Tree)event.widget; - TreeItem[] items = widget.getSelection(); - if (items == null) return; - - // Get the selected node - final TreeObject selectedNode = (TreeObject)items[0].getData(); - final TreeObject parentNode = selectedNode.getParent(); - - // This popup is only for mbeans and only connection,exchange and queue types - if (parentNode == null || - !MBEAN.equals(selectedNode.getType()) || - !(CONNECTION.equals(parentNode.getName()) || - QUEUE.equals(parentNode.getName()) || - EXCHANGE.equals(parentNode.getName())) - ) + Display display = getSite().getShell().getDisplay(); + final Shell shell = new Shell(display); + + public void handleEvent(Event event) { - return; - } - - Menu menu = new Menu (shell, SWT.POP_UP); - MenuItem item = new MenuItem (menu, SWT.PUSH); - // Add the action item, which will remove the node from the tree if selected - item.setText(ACTION_REMOVE_MBEANNODE); - item.addListener (SWT.Selection, new Listener () { - public void handleEvent (Event e) + Tree widget = (Tree) event.widget; + TreeItem[] items = widget.getSelection(); + if (items == null) { - removeManagedObject(parentNode, (ManagedBean)selectedNode.getManagedObject()); - _treeViewer.refresh(); - // set the selection to the parent node - _treeViewer.setSelection(new StructuredSelection(parentNode)); + return; } - }); - menu.setLocation (event.x, event.y); - menu.setVisible (true); - while (!menu.isDisposed () && menu.isVisible ()) - { - if (!display.readAndDispatch ()) + + // Get the selected node + final TreeObject selectedNode = (TreeObject) items[0].getData(); + final TreeObject parentNode = selectedNode.getParent(); + + // This popup is only for mbeans and only connection,exchange and queue types + if ((parentNode == null) || !MBEAN.equals(selectedNode.getType()) + || !(CONNECTION.equals(parentNode.getName()) || QUEUE.equals(parentNode.getName()) + || EXCHANGE.equals(parentNode.getName()))) { - display.sleep (); + return; } + + Menu menu = new Menu(shell, SWT.POP_UP); + MenuItem item = new MenuItem(menu, SWT.PUSH); + // Add the action item, which will remove the node from the tree if selected + item.setText(ACTION_REMOVE_MBEANNODE); + item.addListener(SWT.Selection, new Listener() + { + public void handleEvent(Event e) + { + removeManagedObject(parentNode, (ManagedBean) selectedNode.getManagedObject()); + _treeViewer.refresh(); + // set the selection to the parent node + _treeViewer.setSelection(new StructuredSelection(parentNode)); + } + }); + menu.setLocation(event.x, event.y); + menu.setVisible(true); + while (!menu.isDisposed() && menu.isVisible()) + { + if (!display.readAndDispatch()) + { + display.sleep(); + } + } + + menu.dispose(); } - menu.dispose (); - } - }); - } - + }); + } + /** * Creates Qpid Server connection using JMX RMI protocol * @param server * @throws Exception */ private void createRMIServerConnection(ManagedServer server) throws Exception - { + { try { // Currently Qpid Management Console only supports JMX MBeanServer - ServerRegistry serverRegistry = new JMXServerRegistry(server); - ApplicationRegistry.addServer(server, serverRegistry); + ServerRegistry serverRegistry = new JMXServerRegistry(server); + ApplicationRegistry.addServer(server, serverRegistry); } - catch(Exception ex) + catch (Exception ex) { ex.printStackTrace(); throw new Exception("Error in connecting to Qpid broker at " + server.getUrl(), ex); } } - + /** * Adds a new server node in the navigation view if server connection is successful. * @param transportProtocol @@ -223,15 +231,15 @@ public class NavigationView extends ViewPart * @param domain * @throws Exception */ - public void addNewServer(String transportProtocol, String host, int port, - String domain, String user, String pwd) throws Exception + public void addNewServer(String transportProtocol, String host, int port, String domain, String user, String pwd) + throws Exception { String serverAddress = host + ":" + port; String url = null; ManagedServer managedServer = new ManagedServer(host, port, domain, user, pwd); - + if ("RMI".equals(transportProtocol)) - { + { url = managedServer.getUrl(); List<TreeObject> list = _serversRootNode.getChildren(); for (TreeObject node : list) @@ -242,10 +250,11 @@ public class NavigationView extends ViewPart // Set the server node as selected and then connect it. _treeViewer.setSelection(new StructuredSelection(node)); reconnect(user, pwd); + return; } } - + // The server is not in the list of already added servers, so now connect and add it. managedServer.setName(serverAddress); createRMIServerConnection(managedServer); @@ -254,28 +263,28 @@ public class NavigationView extends ViewPart { throw new InfoRequiredException(transportProtocol + " transport is not supported"); } - + // Server connection is successful. Now add the server in the tree TreeObject serverNode = new TreeObject(serverAddress, NODE_TYPE_SERVER); serverNode.setUrl(url); serverNode.setManagedObject(managedServer); _serversRootNode.addChild(serverNode); - + // Add server in the connected server map _managedServerMap.put(managedServer, serverNode); - + // populate the server tree - populateServer(serverNode); - + populateServer(serverNode); + // Add the Queue/Exchanges/Connections from config file into the navigation tree addConfiguredItems(managedServer); - + _treeViewer.refresh(); - - // save server address in file + + // save server address in file addServerInConfigFile(serverAddress); } - + /** * Create the config file, if it doesn't already exist. * Exits the application if the file could not be created. @@ -290,29 +299,29 @@ public class NavigationView extends ViewPart file.createNewFile(); } } - catch(IOException ex) + catch (IOException ex) { System.out.println("Could not write to the file " + INI_FILENAME); System.out.println(ex); System.exit(1); } } - + /** * Server addresses are stored in a file. When user launches the application again, the * server addresses are picked up from the file and shown in the navigfation view. This method - * adds the server address in a file, when a new server is added in the navigation view. + * adds the server address in a file, when a new server is added in the navigation view. * @param serverAddress */ private void addServerInConfigFile(String serverAddress) { // Check if the address already exists List<String> list = getServerListFromFile(); - if (list != null && list.contains(serverAddress)) + if ((list != null) && list.contains(serverAddress)) { return; } - + // Get the existing server list and add to that String servers = _preferences.getString(INI_SERVERS); String value = (servers.length() != 0) ? (servers + "," + serverAddress) : serverAddress; @@ -321,12 +330,12 @@ public class NavigationView extends ViewPart { _preferences.save(); } - catch(IOException ex) + catch (IOException ex) { System.err.println("Could not add " + serverAddress + " in " + INI_SERVERS + " (" + INI_FILENAME + ")"); System.out.println(ex); } - } + } /** * Adds the item (Queue/Exchange/Connection) to the config file @@ -337,20 +346,20 @@ public class NavigationView extends ViewPart */ private void addItemInConfigFile(TreeObject node) { - ManagedBean mbean = (ManagedBean)node.getManagedObject(); + ManagedBean mbean = (ManagedBean) node.getManagedObject(); String server = mbean.getServer().getName(); String virtualhost = mbean.getVirtualHostName(); String type = node.getParent().getName() + "s"; String name = node.getName(); String itemKey = server + "." + virtualhost + "." + type; - + // Check if the item already exists in the config file List<String> list = getConfiguredItemsFromFile(itemKey); - if (list != null && list.contains(name)) + if ((list != null) && list.contains(name)) { return; } - + // Add this item to the existing list of items String items = _preferences.getString(itemKey); String value = (items.length() != 0) ? (items + "," + name) : name; @@ -359,21 +368,21 @@ public class NavigationView extends ViewPart { _preferences.save(); } - catch(IOException ex) + catch (IOException ex) { System.err.println("Could not add " + name + " in " + itemKey + " (" + INI_FILENAME + ")"); System.out.println(ex); } } - + private void removeItemFromConfigFile(TreeObject node) { - ManagedBean mbean = (ManagedBean)node.getManagedObject(); + ManagedBean mbean = (ManagedBean) node.getManagedObject(); String server = mbean.getServer().getName(); String vHost = mbean.getVirtualHostName(); String type = node.getParent().getName() + "s"; String itemKey = server + "." + vHost + "." + type; - + List<String> list = getConfiguredItemsFromFile(itemKey); if (list.contains(node.getName())) { @@ -383,29 +392,30 @@ public class NavigationView extends ViewPart { value += item + ","; } + value = (value.lastIndexOf(",") != -1) ? value.substring(0, value.lastIndexOf(",")) : value; - + _preferences.putValue(itemKey, value); try { _preferences.save(); } - catch(IOException ex) + catch (IOException ex) { - System.err.println("Error in updating the config file "+ INI_FILENAME); + System.err.println("Error in updating the config file " + INI_FILENAME); System.out.println(ex); } } } /** - * Queries the qpid server for MBeans and populates the navigation view with all MBeans for + * Queries the qpid server for MBeans and populates the navigation view with all MBeans for * the given server node. * @param serverNode */ private void populateServer(TreeObject serverNode) { - ManagedServer server = (ManagedServer)serverNode.getManagedObject(); + ManagedServer server = (ManagedServer) serverNode.getManagedObject(); String domain = server.getDomain(); try { @@ -414,29 +424,30 @@ public class NavigationView extends ViewPart TreeObject domainNode = new TreeObject(domain, NODE_TYPE_DOMAIN); domainNode.setParent(serverNode); - populateDomain(domainNode); + populateDomain(domainNode); } else { List<TreeObject> domainList = new ArrayList<TreeObject>(); - List<String> domains = MBeanUtility.getAllDomains(server);; + List<String> domains = MBeanUtility.getAllDomains(server); + ; for (String domainName : domains) - { + { TreeObject domainNode = new TreeObject(domainName, NODE_TYPE_DOMAIN); domainNode.setParent(serverNode); domainList.add(domainNode); - populateDomain(domainNode); + populateDomain(domainNode); } } } - catch(Exception ex) + catch (Exception ex) { System.out.println("\nError in connecting to Qpid broker "); ex.printStackTrace(); } } - + /** * Queries the Qpid Server and populates the given domain node with all MBeans undser that domain. * @param domain @@ -446,19 +457,19 @@ public class NavigationView extends ViewPart @SuppressWarnings("unchecked") private void populateDomain(TreeObject domain) throws IOException, Exception { - ManagedServer server = (ManagedServer)domain.getParent().getManagedObject(); - + ManagedServer server = (ManagedServer) domain.getParent().getManagedObject(); + // Now populate the mbenas under those types List<ManagedBean> mbeans = MBeanUtility.getManagedObjectsForDomain(server, domain.getName()); for (ManagedBean mbean : mbeans) { mbean.setServer(server); ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(server); - serverRegistry.addManagedObject(mbean); - + serverRegistry.addManagedObject(mbean); + // Add all mbeans other than Connections, Exchanges and Queues. Because these will be added - // manually by selecting from MBeanView - if (!(mbean.isConnection() || mbean.isExchange() || mbean.isQueue()) ) + // manually by selecting from MBeanView + if (!(mbean.isConnection() || mbean.isExchange() || mbean.isQueue())) { addManagedBean(domain, mbean); } @@ -471,10 +482,11 @@ public class NavigationView extends ViewPart { addDefaultNodes(domain); } + break; } } - + /** * Add these three types - Connection, Exchange, Queue * By adding these, these will always be available, even if there are no mbeans under thse types @@ -493,7 +505,7 @@ public class NavigationView extends ViewPart typeChild.setParent(parent); typeChild.setVirtualHost(parent.getVirtualHost()); } - + /** * Checks if a particular mbeantype is already there in the navigation view for a domain. * This is used while populating domain with mbeans. @@ -506,24 +518,30 @@ public class NavigationView extends ViewPart List<TreeObject> childNodes = parent.getChildren(); for (TreeObject child : childNodes) { - if ((NODE_TYPE_MBEANTYPE.equals(child.getType()) || NODE_TYPE_TYPEINSTANCE.equals(child.getType())) && - typeName.equals(child.getName())) + if ((NODE_TYPE_MBEANTYPE.equals(child.getType()) || NODE_TYPE_TYPEINSTANCE.equals(child.getType())) + && typeName.equals(child.getName())) + { return child; + } } + return null; } - + private boolean doesMBeanNodeAlreadyExist(TreeObject typeNode, String mbeanName) { List<TreeObject> childNodes = typeNode.getChildren(); for (TreeObject child : childNodes) { if (MBEAN.equals(child.getType()) && mbeanName.equals(child.getName())) + { return true; + } } + return false; } - + /** * Adds the given MBean to the given domain node. Creates Notification node for the MBean. * sample ObjectNames - @@ -533,18 +551,18 @@ public class NavigationView extends ViewPart * @param mbean * @throws Exception */ - private void addManagedBean(TreeObject domain, ManagedBean mbean)// throws Exception + private void addManagedBean(TreeObject domain, ManagedBean mbean) // throws Exception { String name = mbean.getName(); // Split the mbean type into array of Strings, to create hierarchy // eg. type=VirtualHost.VirtualHostManager,VirtualHost=localhost will be: - // localhost->VirtualHostManager + // localhost->VirtualHostManager // eg. type=org.apache.qpid:type=VirtualHost.Queue,VirtualHost=test,name=ping will be: - // test->Queue->ping + // test->Queue->ping String[] types = mbean.getType().split("\\."); TreeObject typeNode = null; TreeObject parentNode = domain; - + // Run this loop till all nodes(hierarchy) for this mbean are created. This loop only creates // all the required parent nodes for the mbean for (int i = 0; i < types.length; i++) @@ -554,34 +572,34 @@ public class NavigationView extends ViewPart // If value is not null, then there will be a parent node for this mbean // eg. for type=VirtualHost the value is "test" typeNode = getMBeanTypeNode(parentNode, type); - + // create the type node if not already created if (typeNode == null) { // If the ObjectName doesn't have name property, that means there will be only one instance // of this mbean for given "type". So there will be no type node created for this mbean. - if (name == null && (i == types.length -1)) + if ((name == null) && (i == (types.length - 1))) { break; } - + // create a node for "type" typeNode = createTypeNode(parentNode, type); typeNode.setVirtualHost(mbean.getVirtualHostName()); } - + // now type node create becomes the parent node for next node in hierarchy parentNode = typeNode; - - /* + + /* * Now create instances node for this type if value exists. */ - if (valueOftype == null) + if (valueOftype == null) { - // No instance node will be created when value is null (eg type=Queue) + // No instance node will be created when value is null (eg type=Queue) break; - } - + } + // For different virtual hosts, the nodes with given value will be created. // eg type=VirtualHost, value=test typeNode = getMBeanTypeNode(parentNode, valueOftype); @@ -589,55 +607,60 @@ public class NavigationView extends ViewPart { typeNode = createTypeInstanceNode(parentNode, valueOftype); typeNode.setVirtualHost(mbean.getVirtualHostName()); - + // Create default nodes for VHost instances if (type.equals(VIRTUAL_HOST)) { addDefaultNodes(typeNode); } } + parentNode = typeNode; } - + if (typeNode == null) { typeNode = parentNode; } - + // Check if an MBean is already added if (doesMBeanNodeAlreadyExist(typeNode, name)) + { return; - + } + // Add the mbean node now TreeObject mbeanNode = new TreeObject(mbean); mbeanNode.setParent(typeNode); - + // Add the mbean to the config file if (mbean.isQueue() || mbean.isExchange() || mbean.isConnection()) { addItemInConfigFile(mbeanNode); } - + // Add notification node // TODO: show this only if the mbean sends any notification TreeObject notificationNode = new TreeObject(NOTIFICATION, NOTIFICATION); notificationNode.setParent(mbeanNode); } - + private TreeObject createTypeNode(TreeObject parent, String name) { TreeObject typeNode = new TreeObject(name, NODE_TYPE_MBEANTYPE); typeNode.setParent(parent); + return typeNode; } - + private TreeObject createTypeInstanceNode(TreeObject parent, String name) { TreeObject typeNode = new TreeObject(name, NODE_TYPE_TYPEINSTANCE); typeNode.setParent(parent); + return typeNode; } - + /** * Removes all the child nodes of the given parent node. Used when closing a server. * @param parent @@ -649,7 +672,7 @@ public class NavigationView extends ViewPart { removeManagedObject(child); } - + list.clear(); } @@ -666,10 +689,11 @@ public class NavigationView extends ViewPart { if (MBEAN.equals(child.getType())) { - String name = mbean.getName() != null ? mbean.getName() : mbean.getType(); + String name = (mbean.getName() != null) ? mbean.getName() : mbean.getType(); if (child.getName().equals(name)) { objectToRemove = child; + break; } } @@ -678,35 +702,39 @@ public class NavigationView extends ViewPart removeManagedObject(child, mbean); } } - + if (objectToRemove != null) { list.remove(objectToRemove); removeItemFromConfigFile(objectToRemove); } - + } - + /** * Closes the Qpid server connection */ public void disconnect() throws Exception { - TreeObject selectedNode = getSelectedServerNode(); - ManagedServer managedServer = (ManagedServer)selectedNode.getManagedObject(); + TreeObject selectedNode = getSelectedServerNode(); + ManagedServer managedServer = (ManagedServer) selectedNode.getManagedObject(); if (!_managedServerMap.containsKey(managedServer)) + { return; + } // Close server connection ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(managedServer); - if (serverRegistry == null) // server connection is already closed + if (serverRegistry == null) // server connection is already closed + { return; - + } + serverRegistry.closeServerConnection(); // Add server to the closed server list and the worker thread will remove the server from required places. ApplicationRegistry.serverConnectionClosed(managedServer); } - + /** * Connects the selected server node * @throws Exception @@ -714,27 +742,28 @@ public class NavigationView extends ViewPart public void reconnect(String user, String password) throws Exception { TreeObject selectedNode = getSelectedServerNode(); - ManagedServer managedServer = (ManagedServer)selectedNode.getManagedObject(); - if(_managedServerMap.containsKey(managedServer)) + ManagedServer managedServer = (ManagedServer) selectedNode.getManagedObject(); + if (_managedServerMap.containsKey(managedServer)) { throw new InfoRequiredException("Server " + managedServer.getName() + " is already connected"); - } + } + managedServer.setUser(user); managedServer.setPassword(password); createRMIServerConnection(managedServer); - + // put the server in the managed server map _managedServerMap.put(managedServer, selectedNode); - + // populate the server tree now populateServer(selectedNode); - + // Add the Queue/Exchanges/Connections from config file into the navigation tree addConfiguredItems(managedServer); - - _treeViewer.refresh(); + + _treeViewer.refresh(); } - + /** * Adds the items(queues/exchanges/connectins) from config file to the server tree * @param server @@ -750,13 +779,13 @@ public class NavigationView extends ViewPart List<String> items = getConfiguredItemsFromFile(itemKey); List<ManagedBean> mbeans = serverRegistry.getQueues(virtualHost); addConfiguredItems(items, mbeans); - + // Add Exchanges itemKey = server.getName() + "." + virtualHost + "." + INI_EXCHANGES; items = getConfiguredItemsFromFile(itemKey); mbeans = serverRegistry.getExchanges(virtualHost); addConfiguredItems(items, mbeans); - + // Add Connections itemKey = server.getName() + "." + virtualHost + "." + INI_CONNECTIONS; items = getConfiguredItemsFromFile(itemKey); @@ -764,7 +793,7 @@ public class NavigationView extends ViewPart addConfiguredItems(items, mbeans); } } - + /** * Gets the mbeans corresponding to the items and adds those to the navigation tree * @param items @@ -772,11 +801,11 @@ public class NavigationView extends ViewPart */ private void addConfiguredItems(List<String> items, List<ManagedBean> mbeans) { - if ((items == null) || items.isEmpty() | (mbeans == null) || mbeans.isEmpty()) + if ((items == null) || (items.isEmpty() | (mbeans == null)) || mbeans.isEmpty()) { return; } - + for (String item : items) { for (ManagedBean mbean : mbeans) @@ -784,12 +813,13 @@ public class NavigationView extends ViewPart if (item.equals(mbean.getName())) { addManagedBean(mbean); + break; } } } } - + /** * Closes the Qpid server connection if not already closed and removes the server node from the navigation view and * also from the ini file stored in the system. @@ -798,9 +828,9 @@ public class NavigationView extends ViewPart public void removeServer() throws Exception { disconnect(); - + // Remove from the Tree - String serverNodeName = getSelectedServerNode().getName(); + String serverNodeName = getSelectedServerNode().getName(); List<TreeObject> list = _serversRootNode.getChildren(); TreeObject objectToRemove = null; for (TreeObject child : list) @@ -808,46 +838,48 @@ public class NavigationView extends ViewPart if (child.getName().equals(serverNodeName)) { objectToRemove = child; + break; } } - + if (objectToRemove != null) { list.remove(objectToRemove); } - + _treeViewer.refresh(); - + // Remove from the ini file removeServerFromConfigFile(serverNodeName); } - + private void removeServerFromConfigFile(String serverNodeName) { List<String> serversList = getServerListFromFile(); serversList.remove(serverNodeName); - + String value = ""; for (String item : serversList) { value += item + ","; } + value = (value.lastIndexOf(",") != -1) ? value.substring(0, value.lastIndexOf(",")) : value; - + _preferences.putValue(INI_SERVERS, value); - + try { _preferences.save(); } - catch(IOException ex) + catch (IOException ex) { - System.err.println("Error in updating the config file "+ INI_FILENAME); + System.err.println("Error in updating the config file " + INI_FILENAME); System.out.println(ex); } } - + /** * @return the server addresses from the ini file * @throws Exception @@ -856,7 +888,7 @@ public class NavigationView extends ViewPart { return getConfiguredItemsFromFile(INI_SERVERS); } - + /** * Returns the list of items from the config file. * sample ini file: @@ -879,59 +911,60 @@ public class NavigationView extends ViewPart list.add(item); } } - + return list; } - + public TreeObject getSelectedServerNode() throws Exception { - IStructuredSelection ss = (IStructuredSelection)_treeViewer.getSelection(); - TreeObject selectedNode = (TreeObject)ss.getFirstElement(); - if (ss.isEmpty() || selectedNode == null || (!selectedNode.getType().equals(NODE_TYPE_SERVER))) + IStructuredSelection ss = (IStructuredSelection) _treeViewer.getSelection(); + TreeObject selectedNode = (TreeObject) ss.getFirstElement(); + if (ss.isEmpty() || (selectedNode == null) || (!selectedNode.getType().equals(NODE_TYPE_SERVER))) { throw new InfoRequiredException("Please select the server"); } return selectedNode; } - /** - * This is a callback that will allow us to create the viewer and establishConnection + + /** + * This is a callback that will allow us to create the viewer and initialize * it. */ - public void createPartControl(Composite parent) + public void createPartControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(); gridLayout.marginHeight = 2; gridLayout.marginWidth = 2; - gridLayout.horizontalSpacing = 0; - gridLayout.verticalSpacing = 2; + gridLayout.horizontalSpacing = 0; + gridLayout.verticalSpacing = 2; composite.setLayout(gridLayout); - + createTreeViewer(composite); _rootNode = new TreeObject("ROOT", "ROOT"); _serversRootNode = new TreeObject(NAVIGATION_ROOT, "ROOT"); _serversRootNode.setParent(_rootNode); - + _treeViewer.setInput(_rootNode); // set viewer as selection event provider for MBeanView - getSite().setSelectionProvider(_treeViewer); - + getSite().setSelectionProvider(_treeViewer); + // Start worker thread to refresh tree for added or removed objects - (new Thread(new Worker())).start(); - + (new Thread(new Worker())).start(); + createConfigFile(); _preferences = new PreferenceStore(INI_FILENAME); - + try { _preferences.load(); } - catch(IOException ex) + catch (IOException ex) { System.out.println(ex); } - + // load the list of servers already added from file List<String> serversList = getServerListFromFile(); if (serversList != null) @@ -945,23 +978,22 @@ public class NavigationView extends ViewPart _serversRootNode.addChild(serverNode); } } + _treeViewer.refresh(); - - } - /** - * Passing the focus request to the viewer's control. - */ - public void setFocus() - { + } + + /** + * Passing the focus request to the viewer's control. + */ + public void setFocus() + { } - } - public void refresh() { _treeViewer.refresh(); } - + /** * Content provider class for the tree viewer */ @@ -971,36 +1003,39 @@ public class NavigationView extends ViewPart { return getChildren(parent); } - + public Object[] getChildren(final Object parentElement) { - final TreeObject node = (TreeObject)parentElement; + final TreeObject node = (TreeObject) parentElement; + return node.getChildren().toArray(new TreeObject[0]); } - + public Object getParent(final Object element) { - final TreeObject node = (TreeObject)element; + final TreeObject node = (TreeObject) element; + return node.getParent(); } - + public boolean hasChildren(final Object element) { final TreeObject node = (TreeObject) element; + return !node.getChildren().isEmpty(); } - + public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { // Do nothing } - + public void dispose() { // Do nothing } } - + /** * Label provider class for the tree viewer */ @@ -1008,28 +1043,32 @@ public class NavigationView extends ViewPart { public Image getImage(Object element) { - TreeObject node = (TreeObject)element; + TreeObject node = (TreeObject) element; if (node.getType().equals(NOTIFICATION)) { return ApplicationRegistry.getImage(NOTIFICATION_IMAGE); } else if (!node.getType().equals(MBEAN)) { - if (_treeViewer.getExpandedState(node)) - return ApplicationRegistry.getImage(OPEN_FOLDER_IMAGE); - else - return ApplicationRegistry.getImage(CLOSED_FOLDER_IMAGE); - + if (_treeViewer.getExpandedState(node)) + { + return ApplicationRegistry.getImage(OPEN_FOLDER_IMAGE); + } + else + { + return ApplicationRegistry.getImage(CLOSED_FOLDER_IMAGE); + } + } else { return ApplicationRegistry.getImage(MBEAN_IMAGE); } } - + public String getText(Object element) { - TreeObject node = (TreeObject)element; + TreeObject node = (TreeObject) element; if (node.getType().equals(NODE_TYPE_MBEANTYPE)) { return node.getName() + "s"; @@ -1039,35 +1078,42 @@ public class NavigationView extends ViewPart return node.getName(); } } - + public Font getFont(Object element) { - TreeObject node = (TreeObject)element; + TreeObject node = (TreeObject) element; if (node.getType().equals(NODE_TYPE_SERVER)) { if (node.getChildren().isEmpty()) + { return ApplicationRegistry.getFont(FONT_NORMAL); + } else + { return ApplicationRegistry.getFont(FONT_BOLD); + } } + return ApplicationRegistry.getFont(FONT_NORMAL); } } // End of LabelProviderImpl - - + private class ViewerSorterImpl extends ViewerSorter { public int category(Object element) { - TreeObject node = (TreeObject)element; + TreeObject node = (TreeObject) element; if (node.getType().equals(MBEAN)) + { return 1; + } + return 2; } } - + /** - * Worker thread, which keeps looking for new ManagedObjects to be added and + * Worker thread, which keeps looking for new ManagedObjects to be added and * unregistered objects to be removed from the tree. * @author Bhupendra Bhardwaj */ @@ -1075,33 +1121,31 @@ public class NavigationView extends ViewPart { public void run() { - while(true) + while (true) { if (!_managedServerMap.isEmpty()) { - refreshRemovedObjects(); + refreshRemovedObjects(); refreshClosedServerConnections(); } - + try { Thread.sleep(3000); } - catch(Exception ex) - { + catch (Exception ex) + { } + + } // end of while loop + } // end of run method. + } // end of Worker class - } - - }// end of while loop - }// end of run method. - }// end of Worker class - /** * Adds the mbean to the navigation tree * @param mbean * @throws Exception */ - public void addManagedBean(ManagedBean mbean)// throws Exception + public void addManagedBean(ManagedBean mbean) // throws Exception { TreeObject treeServerObject = _managedServerMap.get(mbean.getServer()); List<TreeObject> domains = treeServerObject.getChildren(); @@ -1111,22 +1155,25 @@ public class NavigationView extends ViewPart if (child.getName().equals(mbean.getDomain())) { domain = child; + break; } } - + addManagedBean(domain, mbean); _treeViewer.refresh(); } - + private void refreshRemovedObjects() { for (ManagedServer server : _managedServerMap.keySet()) { final ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(server); - if (serverRegistry == null) // server connection is closed + if (serverRegistry == null) // server connection is closed + { continue; - + } + final List<ManagedBean> removalList = serverRegistry.getObjectsToBeRemoved(); if (removalList != null) { @@ -1145,19 +1192,22 @@ public class NavigationView extends ViewPart if (child.getName().equals(mbean.getDomain())) { domain = child; + break; } } + removeManagedObject(domain, mbean); - //serverRegistry.removeManagedObject(mbean); + // serverRegistry.removeManagedObject(mbean); } + _treeViewer.refresh(); } }); } } } - + /** * Gets the list of closed server connection from the ApplicationRegistry and then removes * the closed server nodes from the navigation view @@ -1169,20 +1219,20 @@ public class NavigationView extends ViewPart { Display display = getSite().getShell().getDisplay(); display.syncExec(new Runnable() - { - public void run() { - for (ManagedServer server : closedServers) + public void run() { - removeManagedObject(_managedServerMap.get(server)); - _managedServerMap.remove(server); - ApplicationRegistry.removeServer(server); + for (ManagedServer server : closedServers) + { + removeManagedObject(_managedServerMap.get(server)); + _managedServerMap.remove(server); + ApplicationRegistry.removeServer(server); + } + + _treeViewer.refresh(); } - - _treeViewer.refresh(); - } - }); + }); } } - -}
\ No newline at end of file + +} |
