diff -r 8997f97391c0 glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties --- a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties Tue Jun 04 12:30:26 2013 +0200 +++ b/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties Tue Jun 04 19:42:26 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. diff -r 8997f97391c0 glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java --- a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java Tue Jun 04 12:30:26 2013 +0200 +++ b/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java Tue Jun 04 19:42:26 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,17 @@ @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()); + throw new NoClassDefFoundError(); + } catch (NoClassDefFoundError ex) { + missingHk2LibraryProvider(); + } } }); } @@ -812,7 +830,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 +850,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 +906,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 +944,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 +1007,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)){ diff -r 8997f97391c0 glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java --- a/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java Tue Jun 04 12:30:26 2013 +0200 +++ b/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java Tue Jun 04 19:42:26 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()));