--- a/glassfish.common/manifest.mf Tue Jun 04 12:30:26 2013 +0200 +++ a/glassfish.common/manifest.mf Wed Jun 05 10:58:28 2013 +0200 @@ -3,6 +3,6 @@ OpenIDE-Module-Install: org/netbeans/modules/glassfish/common/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/glassfish/common/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/glassfish/common/Bundle.properties -OpenIDE-Module-Specification-Version: 1.33 +OpenIDE-Module-Specification-Version: 1.34 OpenIDE-Module-Provides: org.netbeans.modules.glassfish.common --- a/glassfish.javaee/manifest.mf Tue Jun 04 12:30:26 2013 +0200 +++ a/glassfish.javaee/manifest.mf Wed Jun 05 10:58:28 2013 +0200 @@ -4,5 +4,5 @@ OpenIDE-Module-Layer: org/netbeans/modules/glassfish/javaee/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/glassfish/javaee/Bundle.properties OpenIDE-Module-Provides: org.netbeans.modules.serverplugins.javaee -OpenIDE-Module-Specification-Version: 1.23 +OpenIDE-Module-Specification-Version: 1.24 --- a/glassfish.javaee/nbproject/project.xml Tue Jun 04 12:30:26 2013 +0200 +++ a/glassfish.javaee/nbproject/project.xml Wed Jun 05 10:58:28 2013 +0200 @@ -135,7 +135,7 @@ 0-1 - 1.30 + 1.34 --- a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties Tue Jun 04 12:30:26 2013 +0200 +++ a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties Wed Jun 05 10:58:28 2013 +0200 @@ -98,3 +98,6 @@ DNAME_GF_JAVA_EE_IMPL=Java EE from GlassFish DESC_GF_JAVA_EE_IMPL=Java EE jars that are bundled with the most recently registered GlassFish installation + +Hk2JavaEEPlatformImpl.missingHk2LibraryProvider=Class Hk2LibraryProvider was \ +not found. Please check for GlassFish Server modules update. --- a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java Tue Jun 04 12:30:26 2013 +0200 +++ a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java Wed Jun 05 10:58:28 2013 +0200 @@ -67,6 +67,7 @@ import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectUtils; import org.netbeans.api.project.SourceGroup; +import org.netbeans.api.project.libraries.Library; import org.netbeans.modules.glassfish.spi.GlassfishModule; import org.netbeans.modules.glassfish.spi.ServerUtilities; import org.netbeans.modules.j2ee.deployment.common.api.J2eeLibraryTypeProvider; @@ -80,11 +81,13 @@ import org.netbeans.modules.javaee.specs.support.spi.JaxRsStackSupportImplementation; import org.netbeans.modules.websvc.wsstack.api.WSStack; import org.netbeans.modules.websvc.wsstack.spi.WSStackFactory; -import org.netbeans.api.project.libraries.Library; import org.netbeans.spi.project.libraries.LibraryImplementation; +import org.openide.DialogDisplayer; +import org.openide.NotifyDescriptor; import org.openide.filesystems.*; import org.openide.util.ImageUtilities; import org.openide.util.Lookup; +import org.openide.util.NbBundle; import org.openide.util.RequestProcessor; import org.openide.util.Utilities; import org.openide.util.lookup.Lookups; @@ -125,12 +128,21 @@ /** Keep local Lookup instance to be returned by getLookup method. */ private volatile Lookup lkp; - /** Jersey Library support. */ - private Hk2LibraryProvider libraryProvider; - //////////////////////////////////////////////////////////////////////////// // Static methods // //////////////////////////////////////////////////////////////////////////// + + /** + * Display missing Hk2LibraryProvider class warning. + */ + private static void missingHk2LibraryProvider() { + String message = NbBundle.getMessage(Hk2JavaEEPlatformImpl.class, + "Hk2JavaEEPlatformImpl.missingHk2LibraryProvider"); + NotifyDescriptor notifyDescriptor + = new NotifyDescriptor.Message(message); + DialogDisplayer.getDefault().notify(notifyDescriptor); + } + /** * Map GlassFish tooling SDK JavaSE platforms to NetBeans JavaSE platforms. *

@@ -300,8 +312,6 @@ this.displayName = displayName; this.libraryName = libraryName; this.lookupKey = lookupKey; - this.libraryProvider = Hk2LibraryProvider.getProvider( - dm.getCommonServerSupport().getInstance()); addFcl(); initLibraries(); } @@ -649,9 +659,16 @@ @Override public void run() { - libraryProvider.setJavaEELibraryImplementation( - lib, libraryName); - firePropertyChange(PROP_LIBRARIES, null, libraries.clone()); + try { + Hk2LibraryProvider libraryProvider + = Hk2LibraryProvider.getProvider( + dm.getCommonServerSupport().getInstance()); + libraryProvider + .setJavaEELibraryImplementation(lib, libraryName); + firePropertyChange(PROP_LIBRARIES, null, libraries.clone()); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + } } }); } @@ -812,7 +829,14 @@ * @return GlassFish bundled libraries provider. */ public Hk2LibraryProvider getLibraryProvider() { - return libraryProvider; + try { + Hk2LibraryProvider libraryProvider = Hk2LibraryProvider.getProvider( + dm.getCommonServerSupport().getInstance()); + return libraryProvider; + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + return null; + } } private class JaxRsStackSupportImpl implements JaxRsStackSupportImplementation { @@ -825,7 +849,15 @@ */ @Override public boolean addJsr311Api( Project project ) { - Library library = libraryProvider.getJaxRsLibrary(); + Library library; + try { + Hk2LibraryProvider libraryProvider = Hk2LibraryProvider.getProvider( + dm.getCommonServerSupport().getInstance()); + library = libraryProvider.getJaxRsLibrary(); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + library = null; + } if ( library!= null ){ try { return ProjectClassPathModifier.addLibraries( @@ -873,7 +905,15 @@ */ @Override public boolean extendsJerseyProjectClasspath( Project project ) { - Library library = libraryProvider.getJerseyLibrary(); + Library library; + try { + Hk2LibraryProvider libraryProvider = Hk2LibraryProvider.getProvider( + dm.getCommonServerSupport().getInstance()); + library = libraryProvider.getJerseyLibrary(); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + library = null; + } FileObject sourceRoot = getSourceRoot(project); if (sourceRoot == null) { return false; @@ -903,7 +943,15 @@ @Override public void removeJaxRsLibraries(Project project) { - Library library = libraryProvider.getJerseyLibrary(); + Library library; + try { + Hk2LibraryProvider libraryProvider = Hk2LibraryProvider.getProvider( + dm.getCommonServerSupport().getInstance()); + library = libraryProvider.getJerseyLibrary(); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + library = null; + } FileObject sourceRoot = getSourceRoot(project); if ( sourceRoot != null){ String[] classPathTypes = new String[]{ ClassPath.COMPILE , @@ -958,7 +1006,15 @@ */ @Override public boolean isBundled( String classFqn ) { - List urls = libraryProvider.getJerseyClassPathURLs(); + List urls; + try { + Hk2LibraryProvider libraryProvider = Hk2LibraryProvider.getProvider( + dm.getCommonServerSupport().getInstance()); + urls = libraryProvider.getJerseyClassPathURLs(); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + urls = Collections.emptyList(); + } for( URL url : urls ){ FileObject root = URLMapper.findFileObject(url); if ( FileUtil.isArchiveFile(root)){ --- a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java Tue Jun 04 12:30:26 2013 +0200 +++ a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java Wed Jun 05 10:58:28 2013 +0200 @@ -57,14 +57,16 @@ import org.glassfish.tools.ide.data.GlassFishServer; import org.netbeans.api.project.libraries.Library; import org.netbeans.api.project.libraries.LibraryManager; -import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; import org.netbeans.modules.glassfish.spi.GlassfishModule; import org.netbeans.modules.glassfish.spi.GlassfishModuleFactory; import org.netbeans.modules.glassfish.spi.RegisteredDerbyServer; import org.netbeans.modules.glassfish.spi.ServerUtilities; import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceCreationException; +import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; import org.netbeans.spi.project.libraries.LibraryTypeProvider; import org.netbeans.spi.project.libraries.support.LibrariesSupport; +import org.openide.DialogDisplayer; +import org.openide.NotifyDescriptor; import org.openide.filesystems.FileUtil; import org.openide.modules.InstalledFileLocator; import org.openide.util.Lookup; @@ -79,6 +81,17 @@ public class JavaEEServerModuleFactory implements GlassfishModuleFactory { private static final JavaEEServerModuleFactory singleton = new JavaEEServerModuleFactory(); + + /** + * Display missing Hk2LibraryProvider class warning. + */ + private static void missingHk2LibraryProvider() { + String message = NbBundle.getMessage(Hk2JavaEEPlatformImpl.class, + "Hk2JavaEEPlatformImpl.missingHk2LibraryProvider"); + NotifyDescriptor notifyDescriptor + = new NotifyDescriptor.Message(message); + DialogDisplayer.getDefault().notify(notifyDescriptor); + } private JavaEEServerModuleFactory() { } @@ -205,9 +218,15 @@ } } - File j2eeDoc = InstalledFileLocator.getDefault().locate( + File j2eeDoc; + try { + j2eeDoc = InstalledFileLocator.getDefault().locate( "docs/" + PERSISTENCE_JAVADOC, Hk2LibraryProvider.JAVAEE_DOC_CODE_BASE, false); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + j2eeDoc = null; + } if (j2eeDoc != null) { docList.add(ServerUtilities.fileToUrl(j2eeDoc)); } else { @@ -271,7 +290,13 @@ private static boolean ensureGlassFishApiSupport(GlassFishServer server) { String installRoot = server.getServerRoot(); - List libraryList = Hk2LibraryProvider.getProvider(server).getJavaEEClassPathURLs(); + List libraryList; + try { + libraryList = Hk2LibraryProvider.getProvider(server).getJavaEEClassPathURLs(); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + libraryList = null; + } List docList = new ArrayList(); String name = JAVA_EE_5_LIB; @@ -279,10 +304,15 @@ if (f != null && f.exists()) { name = JAVA_EE_6_LIB; } - - File j2eeDoc = InstalledFileLocator.getDefault().locate( - "docs/" + JAVA_EE_JAVADOC, - Hk2LibraryProvider.JAVAEE_DOC_CODE_BASE, false); + File j2eeDoc; + try { + j2eeDoc = InstalledFileLocator.getDefault().locate( + "docs/" + JAVA_EE_JAVADOC, + Hk2LibraryProvider.JAVAEE_DOC_CODE_BASE, false); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + j2eeDoc = null; + } if (j2eeDoc != null) { try { docList.add(ServerUtilities.fileToUrl(j2eeDoc)); @@ -295,7 +325,7 @@ // additional jar for glassfish-samples support f = ServerUtilities.getJarName(installRoot, "web-core" + ServerUtilities.GFV3_VERSION_MATCHER); - if (f != null && f.exists()) { + if (f != null && f.exists() && libraryList != null) { try { libraryList.add(ServerUtilities.fileToUrl(f)); } catch (MalformedURLException ex) { @@ -309,7 +339,7 @@ String[] JERSEY_LIBS = (isGFV31 ? JAXRS_LIBRARIES_31 : JAXRS_LIBRARIES); for (String entry : JERSEY_LIBS) { f = ServerUtilities.getJarName(installRoot, entry + ServerUtilities.GFV3_VERSION_MATCHER); - if ((f != null) && (f.exists())) { + if ((f != null) && (f.exists()) && libraryList != null) { try { libraryList.add( FileUtil.getArchiveRoot(Utilities.toURI(f).toURL()));