bug 353495 - NPE in JDTPackage constructor for default packages - fix from Dmitry
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JavaPackageInfoResourceModelProvider.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JavaPackageInfoResourceModelProvider.java
index 82042f5..b6d64b4 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JavaPackageInfoResourceModelProvider.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/JavaPackageInfoResourceModelProvider.java
@@ -11,10 +11,13 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jpt.common.core.JptCommonCorePlugin;
 import org.eclipse.jpt.jaxb.core.JaxbProject;
 import org.eclipse.jpt.jaxb.core.JaxbResourceModelProvider;
+import org.eclipse.jpt.jaxb.core.JptJaxbCorePlugin;
 import org.eclipse.jpt.jaxb.core.internal.resource.java.source.SourcePackageInfoCompilationUnit;
 import org.eclipse.jpt.jaxb.core.resource.java.JavaResourceCompilationUnit;
 
@@ -46,12 +49,23 @@
 	}
 
 	public JavaResourceCompilationUnit buildResourceModel(JaxbProject jaxbProject, IFile file) {
-		return new SourcePackageInfoCompilationUnit(
-			JavaCore.createCompilationUnitFrom(file),
-			jaxbProject.getPlatform().getAnnotationProvider(),
-			jaxbProject.getPlatform().getAnnotationEditFormatter(),
-			jaxbProject.getModifySharedDocumentCommandExecutor()
-		);
+		ICompilationUnit compilationUnit = JavaCore.createCompilationUnitFrom(file);
+		try {
+			if (compilationUnit.getPackageDeclarations().length > 0){
+				return new SourcePackageInfoCompilationUnit(
+						compilationUnit,
+						jaxbProject.getPlatform().getAnnotationProvider(),
+						jaxbProject.getPlatform().getAnnotationEditFormatter(),
+						jaxbProject.getModifySharedDocumentCommandExecutor());
+			} 
+			//ignore package-info placed in default package as
+			//it doesn't have package declaration and can't hold annotations
+			return null;
+		} catch (JavaModelException e) {
+			JptJaxbCorePlugin.log(e);
+			// Ignore -- project is in a bad state. This will get recalled if necessary
+			return null;
+		}
 	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/JavaPackageInfoResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/JavaPackageInfoResourceModelProvider.java
index 4cde45e..f132486 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/JavaPackageInfoResourceModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/JavaPackageInfoResourceModelProvider.java
@@ -11,10 +11,13 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jpt.common.core.JptCommonCorePlugin;
 import org.eclipse.jpt.jpa.core.JpaProject;
 import org.eclipse.jpt.jpa.core.JpaResourceModelProvider;
+import org.eclipse.jpt.jpa.core.JptJpaCorePlugin;
 import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourcePackageInfoCompilationUnit;
 import org.eclipse.jpt.jpa.core.resource.java.JavaResourceCompilationUnit;
 
@@ -46,12 +49,23 @@
 	}
 
 	public JavaResourceCompilationUnit buildResourceModel(JpaProject jpaProject, IFile file) {
-		return new SourcePackageInfoCompilationUnit(
-			JavaCore.createCompilationUnitFrom(file),
-			jpaProject.getJpaPlatform().getAnnotationProvider(),
-			jpaProject.getJpaPlatform().getAnnotationEditFormatter(),
-			jpaProject.getModifySharedDocumentCommandExecutor()
-		);
+		ICompilationUnit compilationUnit = JavaCore.createCompilationUnitFrom(file);
+		try {
+			if (compilationUnit.getPackageDeclarations().length > 0){
+				return new SourcePackageInfoCompilationUnit(
+						compilationUnit,
+						jpaProject.getJpaPlatform().getAnnotationProvider(),
+						jpaProject.getJpaPlatform().getAnnotationEditFormatter(),
+						jpaProject.getModifySharedDocumentCommandExecutor());
+			} 
+			//ignore package-info placed in default package as
+			//it doesn't have package declaration and can't hold annotations
+			return null;
+		} catch (JavaModelException e) {
+			JptJpaCorePlugin.log(e);
+			// Ignore -- project is in a bad state. This will get recalled if necessary
+			return null;
+		}
 	}
 
 }