diff --git a/java.source/src/org/netbeans/modules/java/source/Bundle.properties b/java.source/src/org/netbeans/modules/java/source/Bundle.properties --- a/java.source/src/org/netbeans/modules/java/source/Bundle.properties +++ b/java.source/src/org/netbeans/modules/java/source/Bundle.properties @@ -48,3 +48,5 @@ Loaders/application/x-class-file/Factories/org-netbeans-modules-java-ClassDataLoader.instance=Class Files Loaders/text/x-java/Factories/org-netbeans-modules-java-JavaDataLoader.instance=Java Files + +ERR_NoUsageThreashold=Placeholder - "No Threshold" diff --git a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java b/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java --- a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java +++ b/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java @@ -43,6 +43,9 @@ import java.io.IOException; import java.lang.management.ManagementFactory; +import java.lang.management.MemoryPoolMXBean; +import java.lang.management.MemoryType; +import java.util.List; import java.util.logging.Logger; import java.util.logging.Level; import javax.management.InstanceAlreadyExistsException; @@ -60,6 +63,7 @@ import org.openide.ErrorManager; import org.openide.modules.ModuleInstall; import org.openide.util.Exceptions; +import org.openide.util.NbBundle; /** * @@ -75,6 +79,28 @@ public JBrowseModule() { } + @Override + public void validate() throws IllegalStateException { + super.validate(); + + long s = System.currentTimeMillis(); + try { + List pools = null; + pools = ManagementFactory.getMemoryPoolMXBeans(); + for (MemoryPoolMXBean pool : pools) { + if (pool.getType() == MemoryType.HEAP && pool.isUsageThresholdSupported()) { //NOI18N + return ; + } + } + + IllegalStateException e = new IllegalStateException("Cannot listen on usage threshold"); + + throw Exceptions.attachLocalizedMessage(e, NbBundle.getMessage(JBrowseModule.class, "ERR_NoUsageThreashold")); + } finally { + System.err.println("threshold check took: " + (System.currentTimeMillis() - s)); + } + } + public @Override void restored() { super.restored(); JavaSourceTaskFactoryManager.register();