You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2021/03/20 21:10:16 UTC

[netbeans] branch master updated: Improve JakartaEE8/JAVAEE8 support with Ant

This is an automated email from the ASF dual-hosted git repository.

matthiasblaesing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 89d0a03  Improve JakartaEE8/JAVAEE8 support with Ant
     new fd26cb2  Merge pull request #2491 from pepness/improve-jee
89d0a03 is described below

commit 89d0a03dcd37a7c5f2019b402c33684dcecd3104
Author: Jose Contreras <pe...@gmail.com>
AuthorDate: Mon Oct 12 21:53:53 2020 -0500

    Improve JakartaEE8/JAVAEE8 support with Ant
    
    -Add support for app-client version 8 when using ant
    -Add methods that detect support for CDI 1.0 and CDI 2.0
    -Add missing resource and license file
    -Add missing deployment descriptor for JEE 8
    -Add missing validations for JDK 11, 8, and 7
    -Remove use of deprecated method "getServerID" in one class
    -Remove unnecessary validation that checks if running JDK 7
    -Remove use of deprecated method ".getDefault().getJ2eePlatform"
    -Use try-with-resources
    -Fix memory leak by closing the PrintWriter
    -Add missing validations for JEE7 and higher
    -Remove unnecessary use of Integer constructor
    -Fix wrong way of comparing Integers
    -Remove unnecessary assignment inside an if condition
    -Add missing validations for EAR applications
    -Wrong profile for JAKARTA_EE_8_FULL
    -Add missing version for JEE 8
    -Add missing validation for JEE8 Application
    -Add missing validation for EJB 3.2
    -Add validation for WebFragment 3.1
    -Add missing MIME_PREFIX for JEE 8
    -Add missing validations for JakartaEE8
    -Change logic to define isEE6Plus variable
    -New logic to evaluate when J2EE is used
    -New logic to evaluate the profile to use
    -Change mdd files to implement and extend local classes
    -Add 1 TODO
    -Update javac.source and compilerargs properties in some Java EE modules
    -Cleanup:
    -Add @Override tags and other small fixes
    -Remove unnecessary parameter in a logging sentence
    -Remove redundant word in javadoc
    -Add curly braces and align code for better readability
---
 .../nbproject/project.properties                   |    4 +-
 .../nbproject/project.properties                   |    4 +-
 .../j2ee/clientproject/AppClientProvider.java      |   52 +-
 .../api/AppClientProjectGenerator.java             |  101 +-
 .../ui/customizer/AppClientProjectProperties.java  |   24 +-
 .../j2ee/clientproject/ui/resources/layer.xml      |    1 +
 enterprise/j2ee.common/licenseinfo.xml             |    1 +
 .../j2ee.common/nbproject/project.properties       |    4 +-
 .../j2ee/common/J2eeProjectCapabilities.java       |   25 +
 .../netbeans/modules/j2ee/common/dd/DDHelper.java  |   50 +-
 .../modules/j2ee/common/dd/resources/ear-8.xml     |    7 +
 enterprise/j2ee.core/nbproject/project.properties  |    2 +-
 .../src/org/netbeans/api/j2ee/core/Profile.java    |    2 +-
 .../nbproject/project.properties                   |    4 +-
 .../j2ee/dd/api/application/Application.java       |    5 +
 .../j2ee/dd/api/application/DDProvider.java        |   57 +-
 .../modules/j2ee/dd/api/client/AppClient.java      |    1 +
 .../modules/j2ee/dd/api/common/RootInterface.java  |    3 +-
 .../modules/j2ee/dd/api/ejb/DDProvider.java        |   52 +-
 .../j2ee/dd/api/web/WebFragmentProvider.java       |   24 +-
 .../modules/j2ee/dd/impl/common/DDUtils.java       |   18 +-
 .../modules/j2ee/dd/impl/ejb/EjbJarProxy.java      |   93 +-
 .../dd/impl/resources/application-client_8.mdd     | 1222 ++++++--------------
 .../j2ee/dd/impl/resources/application_8.mdd       | 1035 ++---------------
 .../modules/j2ee/ddloaders/app/EarDataLoader.java  |    7 +
 .../j2ee/ddloaders/catalog/EnterpriseCatalog.java  |   20 +-
 .../j2ee/ddloaders/client/ClientDataLoader.java    |    6 +
 .../j2ee.earproject/nbproject/project.properties   |    4 +-
 .../j2ee/earproject/EarProjectGenerator.java       |   20 +-
 .../modules/j2ee/earproject/ProjectEar.java        |   57 +-
 .../j2ee.ejbcore/nbproject/project.properties      |    4 +-
 .../nbproject/project.properties                   |    4 +-
 .../modules/j2ee/ejbjarproject/EjbJarProject.java  |   56 +-
 .../modules/j2ee/ejbjarproject/EjbJarProvider.java |   29 +-
 .../ejbjarproject/api/EjbJarProjectGenerator.java  |   32 +-
 .../ui/customizer/EjbJarProjectProperties.java     |   15 +-
 .../nbproject/project.properties                   |    2 +-
 .../nbproject/project.properties                   |    2 +-
 .../nbproject/project.properties                   |    2 +-
 enterprise/j2ee.kit/nbproject/project.properties   |    4 +-
 .../javaee.project/nbproject/project.properties    |    2 +-
 .../api/ant/ui/wizard/J2eeVersionWarningPanel.java |   48 +-
 .../api/ant/ui/wizard/ProjectServerPanel.java      |   14 +-
 .../modules/maven/j2ee/ejb/EjbJarImpl.java         |   17 +-
 enterprise/web.beans/nbproject/project.properties  |    1 +
 .../modules/web/beans/wizard/BeansXmlIterator.java |   25 +-
 46 files changed, 1098 insertions(+), 2064 deletions(-)

diff --git a/enterprise/j2ee.api.ejbmodule/nbproject/project.properties b/enterprise/j2ee.api.ejbmodule/nbproject/project.properties
index ad13781..7f19638 100644
--- a/enterprise/j2ee.api.ejbmodule/nbproject/project.properties
+++ b/enterprise/j2ee.api.ejbmodule/nbproject/project.properties
@@ -17,8 +17,8 @@
 
 is.autoload=true
 
-javac.compilerargs=-Xlint:unchecked
-javac.source=1.6
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 javadoc.overview=${basedir}/arch/overview.html
 javadoc.arch=${basedir}/arch.xml
 javadoc.apichanges=${basedir}/apichanges.xml
diff --git a/enterprise/j2ee.clientproject/nbproject/project.properties b/enterprise/j2ee.clientproject/nbproject/project.properties
index 35b054e..7041d70 100644
--- a/enterprise/j2ee.clientproject/nbproject/project.properties
+++ b/enterprise/j2ee.clientproject/nbproject/project.properties
@@ -15,11 +15,11 @@
 # specific language governing permissions and limitations
 # under the License.
 
-javac.compilerargs=-Xlint:unchecked
 spec.version.base=1.58.0
 javadoc.arch=${basedir}/arch.xml
 javadoc.preview=true
-javac.source=1.6
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 
 test.config.stableBTD.includes=**/*Test.class
 test.config.stableBTD.excludes=\
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java
index a9dfd0b..8b4de64 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java
@@ -30,6 +30,8 @@ import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.swing.SwingUtilities;
 import org.netbeans.api.j2ee.core.Profile;
 import org.netbeans.api.java.classpath.ClassPath;
@@ -49,6 +51,7 @@ import org.netbeans.modules.j2ee.dd.spi.client.AppClientMetadataModelFactory;
 import org.netbeans.modules.j2ee.dd.spi.webservices.WebservicesMetadataModelFactory;
 import org.netbeans.modules.j2ee.deployment.common.api.EjbChangeDescriptor;
 import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment;
+import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException;
 import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
 import org.netbeans.modules.j2ee.deployment.devmodules.api.ModuleChangeReporter;
 import org.netbeans.modules.j2ee.deployment.devmodules.api.ResourceChangeReporter;
@@ -138,10 +141,12 @@ public final class AppClientProvider extends J2eeModuleProvider
         return getFile(AppClientProjectProperties.META_INF);
     }
     
+    @Override
     public File getResourceDirectory() {
         return getFile(AppClientProjectProperties.RESOURCE_DIR);
     }
     
+    @Override
     public File getDeploymentConfigurationFile(String name) {
         String path = getConfigSupport().getContentRelativePath(name);
         if (path == null) {
@@ -164,15 +169,15 @@ public final class AppClientProvider extends J2eeModuleProvider
                     FileUtil.toFile(project.getProjectDirectory()), project.evaluator(), new String[]{"javac.classpath"}));
         List<File> files = new ArrayList<File>();
         for (FileObject fo : cp.getRoots()) {
-            fo = FileUtil.getArchiveFile(fo);
-            if (fo == null) {
+            if (FileUtil.getArchiveFile(fo) == null) {
                 continue;
             }
-            files.add(FileUtil.toFile(fo));
+            files.add(FileUtil.toFile(FileUtil.getArchiveFile(fo)));
         }
         return files.toArray(new File[files.size()]);
     }
 
+    @Override
     public FileObject getArchive() {
         return getFileObject(AppClientProjectProperties.DIST_JAR);
     }
@@ -194,6 +199,7 @@ public final class AppClientProvider extends J2eeModuleProvider
         return null;
     }
     
+    @Override
     public synchronized J2eeModule getJ2eeModule () {
         if (j2eeModule == null) {
             j2eeModule = J2eeModuleFactory.createJ2eeModule(this);
@@ -201,6 +207,7 @@ public final class AppClientProvider extends J2eeModuleProvider
         return j2eeModule;
     }
     
+    @Override
     public ModuleChangeReporter getModuleChangeReporter() {
         return this;
     }
@@ -220,15 +227,18 @@ public final class AppClientProvider extends J2eeModuleProvider
         return helper.getStandardPropertyEvaluator().getProperty(AppClientProjectProperties.J2EE_SERVER_INSTANCE);
     }
     
+    @Override
     public void setServerInstanceID(String serverInstanceID) {
         assert serverInstanceID != null : "passed serverInstanceID cannot be null";
         AppClientProjectProperties.setServerInstance(project, helper, serverInstanceID);
     }
     
+    @Override
     public Iterator<J2eeModule.RootedEntry> getArchiveContents() throws IOException {
         return new IT(getContentDirectory());
     }
     
+    @Override
     public FileObject getContentDirectory() {
         return getFileObject(ProjectProperties.BUILD_CLASSES_DIR);
     }
@@ -249,6 +259,7 @@ public final class AppClientProvider extends J2eeModuleProvider
 //        return null;
 //    }
     
+    @Override
     public <T> MetadataModel<T> getMetadataModel(Class<T> type) {
         if (type == AppClientMetadata.class) {
             @SuppressWarnings("unchecked") // NOI18N
@@ -324,20 +335,29 @@ public final class AppClientProvider extends J2eeModuleProvider
         return metaInfFo.getFileObject(WebServicesClientConstants.WEBSERVICES_DD, "xml"); // NOI18N
     }
     
+    @Override
     public EjbChangeDescriptor getEjbChanges(long timestamp) {
         return this;
     }
     
+    @Override
     public J2eeModule.Type getModuleType() {
         return J2eeModule.Type.CAR;
     }
     
+    @Override
     public String getModuleVersion() {
         Profile p = Profile.fromPropertiesString(project.evaluator().getProperty(AppClientProjectProperties.J2EE_PLATFORM));
         if (p == null) {
-            p = Profile.JAVA_EE_6_FULL;
+            return AppClient.VERSION_6_0;
         }
-        if (Profile.JAVA_EE_5.equals(p)) {
+        if (Profile.JAKARTA_EE_8_FULL.equals(p) || Profile.JAKARTA_EE_8_WEB.equals(p)) {
+            return AppClient.VERSION_8_0;
+        } else if (Profile.JAVA_EE_8_FULL.equals(p) || Profile.JAVA_EE_8_WEB.equals(p)) {
+            return AppClient.VERSION_8_0;
+        } else if (Profile.JAVA_EE_7_FULL.equals(p) || Profile.JAVA_EE_7_WEB.equals(p)) {
+            return AppClient.VERSION_7_0;
+        } else if (Profile.JAVA_EE_5.equals(p)) {
             return AppClient.VERSION_5_0;
         } else if (Profile.J2EE_14.equals(p)) {
             return AppClient.VERSION_1_4;
@@ -346,16 +366,22 @@ public final class AppClientProvider extends J2eeModuleProvider
         }
     }
     
+    @Override
     public void propertyChange(PropertyChangeEvent evt) {
         if (evt.getPropertyName().equals(AppClient.PROPERTY_VERSION)) {
             String oldVersion = (String) evt.getOldValue();
             String newVersion = (String) evt.getNewValue();
             getPropertyChangeSupport().firePropertyChange(J2eeModule.PROP_MODULE_VERSION, oldVersion, newVersion);
         } else if (evt.getPropertyName().equals(AppClientProjectProperties.J2EE_SERVER_INSTANCE)) {
+            try {
             Deployment d = Deployment.getDefault();
-            String oldServerID = evt.getOldValue() == null ? null : d.getServerID((String) evt.getOldValue());
-            String newServerID = evt.getNewValue() == null ? null : d.getServerID((String) evt.getNewValue());
+            String oldServerID = evt.getOldValue() == null ? null : d.getServerInstance((String) evt.getOldValue()).getServerID();
+            String newServerID = evt.getNewValue() == null ? null : d.getServerInstance((String) evt.getNewValue()).getServerID();
             fireServerChange(oldServerID, newServerID);
+            } catch (InstanceRemovedException ie) {
+                // noop ignore
+                Logger.getLogger(AppClientProvider.class.getName()).log(Level.FINE, null, ie); //NO18N
+            }
         }  else if (AppClientProjectProperties.RESOURCE_DIR.equals(evt.getPropertyName())) {
             String oldValue = (String)evt.getOldValue();
             String newValue = (String)evt.getNewValue();
@@ -366,12 +392,14 @@ public final class AppClientProvider extends J2eeModuleProvider
         }
     }
     
+    @Override
     public String getUrl() {
         EditableProperties ep =  helper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
         String name = ep.getProperty(AppClientProjectProperties.JAR_NAME);
         return name == null ? "" : ('/' + name);
     }
     
+    @Override
     public boolean isManifestChanged(long timestamp) {
         return false;
     }
@@ -380,10 +408,12 @@ public final class AppClientProvider extends J2eeModuleProvider
         throw new UnsupportedOperationException("Cannot customize URL of Application Client module"); // NOI18N
     }
     
+    @Override
     public boolean ejbsChanged() {
         return false;
     }
     
+    @Override
     public String[] getChangedEjbs() {
         return new String[] {};
     }
@@ -449,11 +479,13 @@ public final class AppClientProvider extends J2eeModuleProvider
         }
     }
 
+    @Override
     public void addPropertyChangeListener(PropertyChangeListener listener) {
         // XXX need to listen on the module version
         getPropertyChangeSupport().addPropertyChangeListener(listener);
     }
 
+    @Override
     public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
         if (propertyChangeSupport == null) {
             return;
@@ -470,6 +502,7 @@ public final class AppClientProvider extends J2eeModuleProvider
 
     private class AppClientResourceChangeReporter implements ResourceChangeReporterImplementation {
 
+        @Override
         public boolean isServerResourceChanged(long lastDeploy) {
             File resDir = getResourceDirectory();
             if (resDir != null && resDir.exists() && resDir.isDirectory()) {
@@ -496,15 +529,18 @@ public final class AppClientProvider extends J2eeModuleProvider
             this.root = f;
         }
         
+        @Override
         public boolean hasNext() {
             return ch.hasMoreElements();
         }
         
+        @Override
         public J2eeModule.RootedEntry next() {
             FileObject f = (FileObject) ch.nextElement();
             return new FSRootRE(root, f);
         }
         
+        @Override
         public void remove() {
             throw new UnsupportedOperationException();
         }
@@ -521,10 +557,12 @@ public final class AppClientProvider extends J2eeModuleProvider
             this.root = root;
         }
         
+        @Override
         public FileObject getFileObject() {
             return f;
         }
         
+        @Override
         public String getRelativePath() {
             return FileUtil.getRelativePath(root, f);
         }
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java
index 9b83b55..df22131 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java
@@ -48,6 +48,7 @@ import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
 import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eePlatform;
 import org.netbeans.api.j2ee.core.Profile;
 import org.netbeans.modules.j2ee.common.dd.DDHelper;
+import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException;
 import org.netbeans.modules.javaee.project.api.ant.AntProjectConstants;
 import org.netbeans.modules.javaee.project.api.ant.ui.J2EEProjectProperties;
 import org.netbeans.modules.java.api.common.ant.UpdateHelper;
@@ -79,7 +80,6 @@ import org.w3c.dom.NodeList;
  * Creates a AppClientProject from scratch according to some initial configuration.
  */
 public class AppClientProjectGenerator {
-    
     private static final String DEFAULT_CONF_FOLDER = "conf"; //NOI18N
     private static final String DEFAULT_SRC_FOLDER = "src"; //NOI18N
     private static final String DEFAULT_TEST_FOLDER = "test"; //NOI18N
@@ -99,7 +99,7 @@ public class AppClientProjectGenerator {
      * @param dir the top-level directory (need not yet exist but if it does it must be empty)
      * @param name the name for the project
      * @param mainClass the name for the main class
-     * @param j2eeLevel defined in <code>org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule<code>
+     * @param j2eeLevel defined in <code>org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule</code>
      * @param serverInstanceID provided by j2eeserver module
      *
      * @return the helper object permitting it to be further customized
@@ -137,6 +137,7 @@ public class AppClientProjectGenerator {
         // create project in one FS atomic action:
         FileSystem fs = projectDir.getFileSystem();
         fs.runAtomicAction(new FileSystem.AtomicAction() {
+            @Override
             public void run() throws IOException {
                 AntProjectHelper helper = createProjectImpl(createData, projectDir);
                 h[0] = helper;
@@ -159,16 +160,23 @@ public class AppClientProjectGenerator {
         
         // create application-client.xml
         String resource;
-        if (Profile.JAVA_EE_5.equals(j2eeProfile)) {
+        if(j2eeProfile == null) {
+            resource = "org-netbeans-modules-j2ee-clientproject/application-client-6.xml"; // NOI18N
+        } else if (Profile.JAKARTA_EE_8_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_8_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-8.xml"; // NOI18N
+        } else if (Profile.JAVA_EE_8_FULL.equals(j2eeProfile) || Profile.JAVA_EE_8_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-8.xml"; // NOI18N
+        } else if (Profile.JAVA_EE_7_FULL.equals(j2eeProfile) || Profile.JAVA_EE_7_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-7.xml"; // NOI18N
+        } else if (Profile.JAVA_EE_5.equals(j2eeProfile)) {
                  resource = "org-netbeans-modules-j2ee-clientproject/application-client-5.xml"; // NOI18N
         } else if (Profile.J2EE_14.equals(j2eeProfile)) {
                  resource = "org-netbeans-modules-j2ee-clientproject/application-client-1.4.xml"; // NOI18N
-        } else if (j2eeProfile != null && j2eeProfile.isAtLeast(Profile.JAVA_EE_7_WEB)) {
-                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-7.xml"; // NOI18N
         } else {
             resource = "org-netbeans-modules-j2ee-clientproject/application-client-6.xml"; // NOI18N
         }
-        FileObject ddFile = FileUtil.copyFile(FileUtil.getConfigFile(resource), confRoot, "application-client"); //NOI18N
+        FileObject foSource = FileUtil.getConfigFile(resource);
+        FileObject ddFile = FileUtil.copyFile(foSource, confRoot, "application-client"); //NOI18N
         AppClient appClient = DDProvider.getDefault().getDDRoot(ddFile);
         appClient.setDisplayName(name);
         appClient.write(ddFile);
@@ -195,6 +203,7 @@ public class AppClientProjectGenerator {
         final ReferenceHelper refHelper = p.getReferenceHelper();        
         try {
             ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction<Void>() {
+                @Override
                 public Void run() throws Exception {
                     copyRequiredLibraries(h, refHelper, createData);
                     return null;
@@ -222,7 +231,7 @@ public class AppClientProjectGenerator {
      * @param testFolders top-level location(s) of test(s) - must not be null
      * @param confFolder top-level location of configuration file(s) folder - must not be null
      * @param libFolder top-level location of libraries
-     * @param j2eeLevel defined in <code>org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule<code>
+     * @param j2eeLevel defined in <code>org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule</code>
      * @param serverInstanceID provided by j2eeserver module
      *
      * @return the helper object permitting it to be further customized
@@ -265,6 +274,7 @@ public class AppClientProjectGenerator {
         // create project in one FS atomic action:
         FileSystem fs = projectDir.getFileSystem();
         fs.runAtomicAction(new FileSystem.AtomicAction() {
+            @Override
             public void run() throws IOException {
                 AntProjectHelper helper = importProjectImpl(createData, projectDir);
                 h[0] = helper;
@@ -292,6 +302,7 @@ public class AppClientProjectGenerator {
         
         try {
             ProjectManager.mutex().writeAccess( new Mutex.ExceptionAction<Void>() {
+                @Override
                 public Void run() throws Exception {
                     Element data = h.getPrimaryConfigurationData(true);
                     Document doc = data.getOwnerDocument();
@@ -372,12 +383,18 @@ public class AppClientProjectGenerator {
         } else {
             // XXX just temporary, since now the import would fail due to another bug
             String resource;
-            if (Profile.JAVA_EE_5.equals(j2eeProfile)) {
+            if (j2eeProfile == null) {
+                resource = "org-netbeans-modules-j2ee-clientproject/application-client-6.xml"; // NOI18N
+            } else if (Profile.JAKARTA_EE_8_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_8_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-8.xml"; // NOI18N
+            } else if (Profile.JAVA_EE_8_FULL.equals(j2eeProfile) || Profile.JAVA_EE_8_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-8.xml"; // NOI18N
+            } else if (Profile.JAVA_EE_7_FULL.equals(j2eeProfile) || Profile.JAVA_EE_7_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-7.xml"; // NOI18N
+            } else if (Profile.JAVA_EE_5.equals(j2eeProfile)) {
                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-5.xml"; // NOI18N
             } else if (Profile.J2EE_14.equals(j2eeProfile)) {
                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-1.4.xml"; // NOI18N
-            } else if (j2eeProfile != null && j2eeProfile.isAtLeast(Profile.JAVA_EE_7_WEB)) {
-                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-7.xml"; // NOI18N
             } else {
                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-6.xml"; // NOI18N
             }
@@ -408,11 +425,11 @@ public class AppClientProjectGenerator {
         String libraryName = null;
         if (j2eeProfile.equals(Profile.JAVA_EE_6_FULL) || j2eeProfile.equals(Profile.JAVA_EE_6_WEB)) {
             libraryName = AntProjectConstants.ENDORSED_LIBRARY_NAME_6;
-        }
-        if (j2eeProfile.equals(Profile.JAVA_EE_7_FULL) || j2eeProfile.equals(Profile.JAVA_EE_7_WEB)) {
+            if (rh.getProjectLibraryManager().getLibrary(libraryName) == null) { // NOI18N
+                rh.copyLibrary(LibraryManager.getDefault().getLibrary(libraryName)); // NOI18N
+            }
+        } else if (j2eeProfile.equals(Profile.JAVA_EE_7_FULL) || j2eeProfile.equals(Profile.JAVA_EE_7_WEB)) {
             libraryName = AntProjectConstants.ENDORSED_LIBRARY_NAME_7;
-        }
-        if (libraryName != null) {
             if (rh.getProjectLibraryManager().getLibrary(libraryName) == null) { // NOI18N
                 rh.copyLibrary(LibraryManager.getDefault().getLibrary(libraryName)); // NOI18N
             }
@@ -432,7 +449,7 @@ public class AppClientProjectGenerator {
      * @param testFolders top-level location(s) of test(s) - must not be null
      * @param confFolder top-level location of configuration file(s) folder - must not be null
      * @param libFolder top-level location of libraries
-     * @param j2eeLevel defined in <code>org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule<code>
+     * @param j2eeLevel defined in <code>org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule</code>
      * @param serverInstanceID provided by j2eeserver module
      * @throws IOException in case something went wrong
      */
@@ -456,7 +473,7 @@ public class AppClientProjectGenerator {
             boolean skipTests) throws IOException {
 
         Utils.logUI(NbBundle.getBundle(AppClientProjectGenerator.class), "UI_APP_PROJECT_CREATE_SHARABILITY", // NOI18N
-                new Object[]{Boolean.valueOf(librariesDefinition != null), Boolean.FALSE});
+                new Object[]{(librariesDefinition != null), Boolean.FALSE});
 
         AntProjectHelper h = ProjectGenerator.createProject(dirFO, AppClientProjectType.TYPE, librariesDefinition);
         final AppClientProject prj = (AppClientProject)ProjectManager.getDefault().findProject(h.getProjectDirectory());
@@ -544,9 +561,7 @@ public class AppClientProjectGenerator {
         String sourceLevel = v.toString();
         // #89131: these levels are not actually distinct from 1.5.
         // #181215: JDK 6 should be the default source/binary format for Java EE 6 projects
-        if (sourceLevel.equals("1.7")) {
-            sourceLevel = "1.6";
-        }
+        // #181215: Not neccessary anymore because NetBeans should run on minimum JDK 8
         ep.setProperty(AppClientProjectProperties.JAVAC_SOURCE, sourceLevel); // NOI18N
         ep.setProperty(AppClientProjectProperties.JAVAC_TARGET, sourceLevel); // NOI18N
         
@@ -601,14 +616,21 @@ public class AppClientProjectGenerator {
         ep.setProperty(AppClientProjectProperties.JAVADOC_ENCODING, "${" + AppClientProjectProperties.SOURCE_ENCODING + "}"); // NOI18N
         ep.setProperty(AppClientProjectProperties.JAVADOC_ADDITIONALPARAM, ""); // NOI18N
         
-        Deployment deployment = Deployment.getDefault();
-        J2eePlatform j2eePlatform = Deployment.getDefault().getJ2eePlatform(serverInstanceID);
-        if (!j2eePlatform.getSupportedProfiles(J2eeModule.Type.CAR).contains(j2eeProfile)) {
-            Logger.getLogger("global").log(Level.WARNING,
-                                           NbBundle.getMessage(AppClientProjectGenerator.class,
-                                                               "MSG_Warning_SpecLevelNotSupported",
-                                                               new Object[] {j2eeProfile, Deployment.getDefault().getServerInstanceDisplayName(serverInstanceID)}));
+        //Deployment deployment = Deployment.getDefault();
+        J2eePlatform j2eePlatform = null;
+        try {
+            j2eePlatform = Deployment.getDefault().getServerInstance(serverInstanceID).getJ2eePlatform();
+            if (!j2eePlatform.getSupportedProfiles(J2eeModule.Type.CAR).contains(j2eeProfile)) {
+                Logger.getLogger(AppClientProjectGenerator.class.getName())
+                                .log(Level.WARNING, NbBundle.getMessage(AppClientProjectGenerator.class,
+                                "MSG_Warning_SpecLevelNotSupported",
+                                new Object[] {j2eeProfile, Deployment.getDefault().getServerInstance(serverInstanceID).getDisplayName()}));
+            }
+        } catch (InstanceRemovedException ie) {
+            // noop ignore
+            Logger.getLogger(AppClientProjectGenerator.class.getName()).log(Level.FINE, "{0}", ie);
         }
+        
         ep.setProperty(AppClientProjectProperties.J2EE_PLATFORM, j2eeProfile.toPropertiesString());
         ep.setProperty("manifest.file", "${" +AppClientProjectProperties.META_INF + "}/" + MANIFEST_FILE); // NOI18N
         
@@ -619,18 +641,16 @@ public class AppClientProjectGenerator {
         String mainClassArgs = j2eePlatform.getToolProperty(J2eePlatform.TOOL_APP_CLIENT_RUNTIME, J2eePlatform.TOOL_PROP_MAIN_CLASS_ARGS);
         if (mainClassArgs != null && !mainClassArgs.equals("")) {
             ep.put(AppClientProjectProperties.APPCLIENT_MAINCLASS_ARGS, mainClassArgs);
-        } else if ((mainClassArgs = j2eePlatform.getToolProperty(J2eePlatform.TOOL_APP_CLIENT_RUNTIME, AppClientProjectProperties.CLIENT_NAME))
-                != null) {
+        } else if ((j2eePlatform.getToolProperty(J2eePlatform.TOOL_APP_CLIENT_RUNTIME, AppClientProjectProperties.CLIENT_NAME)) != null) {
             ep.put(AppClientProjectProperties.CLIENT_NAME, mainClassArgs);
         }
-
+        
         if (j2eeProfile.equals(Profile.JAVA_EE_6_FULL) || j2eeProfile.equals(Profile.JAVA_EE_6_WEB)) {
             ep.setProperty(ProjectProperties.ENDORSED_CLASSPATH, new String[]{AntProjectConstants.ENDORSED_LIBRARY_CLASSPATH_6});
-        }
-        if (j2eeProfile.equals(Profile.JAVA_EE_7_FULL) || j2eeProfile.equals(Profile.JAVA_EE_7_WEB)) {
+        } else if (j2eeProfile.equals(Profile.JAVA_EE_7_FULL) || j2eeProfile.equals(Profile.JAVA_EE_7_WEB)) {
             ep.setProperty(ProjectProperties.ENDORSED_CLASSPATH, new String[]{AntProjectConstants.ENDORSED_LIBRARY_CLASSPATH_7});
         }
-
+        
         h.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
         
         // XXX this seems to be used in runtime only so, not part of sharable server
@@ -639,7 +659,6 @@ public class AppClientProjectGenerator {
         Map<String, String> roots = J2EEProjectProperties.extractPlatformLibrariesRoot(j2eePlatform);
         epPriv.setProperty(AppClientProjectProperties.APPCLIENT_TOOL_RUNTIME, J2EEProjectProperties.toClasspathString(accrt, roots));
         
-        
         String acMain = j2eePlatform.getToolProperty(J2eePlatform.TOOL_APP_CLIENT_RUNTIME, J2eePlatform.TOOL_PROP_MAIN_CLASS);
         if (acMain != null) {
             epPriv.setProperty(AppClientProjectProperties.APPCLIENT_TOOL_MAINCLASS, acMain);
@@ -736,8 +755,10 @@ public class AppClientProjectGenerator {
         // it is deadlock-prone
         try {
             projectDir.getFileSystem().runAtomicAction(new AtomicAction() {
+                @Override
                 public void run() throws IOException {
                     ProjectManager.mutex().writeAccess(new Runnable() {
+                        @Override
                         public void run() {
                             try {
                                 AppClientProject project = (AppClientProject)ProjectManager.getDefault().findProject(helper.getProjectDirectory());
@@ -747,13 +768,10 @@ public class AppClientProjectGenerator {
                                 if (finalPlatformName == null) {
                                     finalPlatformName = PreferredProjectPlatform.getPreferredPlatform(JavaPlatform.getDefault().getSpecification().getName()).getDisplayName();
                                 }
-
                                 // #89131: these levels are not actually distinct from 1.5.
                                 // #181215: JDK 6 should be the default source/binary format for Java EE 6 projects
+                                // #181215: Not neccessary anymore because NetBeans should run on minimum JDK 8
                                 String srcLevel = sourceLevel;
-                                if (sourceLevel.equals("1.7")) {
-                                    srcLevel = "1.6";
-                                }
                                 PlatformUiSupport.storePlatform(ep, updateHelper, AppClientProjectType.PROJECT_CONFIGURATION_NAMESPACE, finalPlatformName, srcLevel != null ? new SpecificationVersion(srcLevel) : null);
                                 helper.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
                                 ProjectManager.getDefault().saveProject(ProjectManager.getDefault().findProject(helper.getProjectDirectory()));
@@ -780,15 +798,10 @@ public class AppClientProjectGenerator {
             FileObject manifest = FileUtil.createData(dir, path);
             FileLock lock = manifest.lock();
             try {
-                OutputStream os = manifest.getOutputStream(lock);
-                try {
-                    PrintWriter pw = new PrintWriter(os);
+                try (OutputStream os = manifest.getOutputStream(lock); PrintWriter pw = new PrintWriter(os, true)) {
                     pw.println("Manifest-Version: 1.0"); // NOI18N
                     pw.println("X-COMMENT: Main-Class will be added automatically by build"); // NOI18N
                     pw.println(); // safest to end in \n\n due to JRE parsing bug
-                    pw.flush();
-                } finally {
-                    os.close();
                 }
             } finally {
                 lock.releaseLock();
@@ -797,5 +810,3 @@ public class AppClientProjectGenerator {
     }
     
 }
-
-
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java
index 47e1cb8..ba0e6b8 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java
@@ -34,6 +34,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.Vector;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -55,7 +56,6 @@ import org.netbeans.modules.j2ee.clientproject.AppClientProject;
 import org.netbeans.modules.j2ee.clientproject.AppClientProjectType;
 import org.netbeans.modules.j2ee.clientproject.Utils;
 import org.netbeans.modules.j2ee.clientproject.classpath.ClassPathSupportCallbackImpl;
-import org.netbeans.modules.j2ee.common.SharabilityUtility;
 import org.netbeans.modules.java.api.common.classpath.ClassPathSupport;
 import org.netbeans.modules.java.api.common.project.ui.ClassPathUiSupport;
 import org.netbeans.modules.javaee.project.api.ui.utils.J2eePlatformUiSupport;
@@ -90,9 +90,9 @@ final public class AppClientProjectProperties {
     
     //Hotfix of the issue #70058
     //Should be removed when the StoreGroup SPI will be extended to allow false default value in ToggleButtonModel
-    private static final Integer BOOLEAN_KIND_TF = new Integer( 0 );
-    private static final Integer BOOLEAN_KIND_YN = new Integer( 1 );
-    private static final Integer BOOLEAN_KIND_ED = new Integer( 2 );
+    private static final Integer BOOLEAN_KIND_TF = 0;
+    private static final Integer BOOLEAN_KIND_YN = 1;
+    private static final Integer BOOLEAN_KIND_ED = 2;
     private Integer javacDebugBooleanKind;
     private Integer javadocPreviewBooleanKind;
     
@@ -323,12 +323,14 @@ final public class AppClientProjectProperties {
         PLATFORM_LIST_RENDERER = PlatformUiSupport.createPlatformListCellRenderer();
         SpecificationVersion minimalSourceLevel = null;
         Profile profile = Profile.fromPropertiesString(evaluator.getProperty(J2EE_PLATFORM));
-        if (Profile.JAVA_EE_6_FULL.equals(profile)) {
+        if (Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile)) {
+            minimalSourceLevel = new SpecificationVersion("1.8");
+        } else if (Profile.JAVA_EE_7_FULL.equals(profile)) {
+            minimalSourceLevel = new SpecificationVersion("1.7");
+        } else if (Profile.JAVA_EE_6_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.6");
         } else if (Profile.JAVA_EE_5.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.5");
-        } else if (Profile.JAVA_EE_7_FULL.equals(profile)) {
-            minimalSourceLevel = new SpecificationVersion("1.7");
         }
         JAVAC_SOURCE_MODEL = PlatformUiSupport.createSourceLevelComboBoxModel(PLATFORM_MODEL, evaluator.getProperty(JAVAC_SOURCE), evaluator.getProperty(JAVAC_TARGET), minimalSourceLevel);
         JAVAC_SOURCE_RENDERER = PlatformUiSupport.createSourceLevelListCellRenderer ();
@@ -569,7 +571,7 @@ final public class AppClientProjectProperties {
     }
     
     /** Finds out what are new and removed project dependencies and 
-     * applyes the info to the project
+     * applies the info to the project
      */
     private void resolveProjectDependencies() {
             
@@ -663,10 +665,10 @@ final public class AppClientProjectProperties {
     //Hotfix of the issue #70058
     //Should be removed when the StoreGroup SPI will be extended to allow false default value in ToggleButtonModel
     private static String encodeBoolean (boolean value, Integer kind) {
-        if ( kind == BOOLEAN_KIND_ED ) {
+        if ( Objects.equals(kind, BOOLEAN_KIND_ED) ) {
             return value ? "on" : "off"; // NOI18N
         }
-        else if ( kind == BOOLEAN_KIND_YN ) { // NOI18N
+        else if ( Objects.equals(kind, BOOLEAN_KIND_YN) ) { // NOI18N
             return value ? "yes" : "no"; // NOI18N
         }
         else {
@@ -776,7 +778,7 @@ final public class AppClientProjectProperties {
                 projectProps.remove(CLIENT_NAME);
             }
             projectProps.put(APPCLIENT_MAINCLASS_ARGS, mainClassArgs);
-        } else if ((mainClassArgs = j2eePlatform.getToolProperty(J2eePlatform.TOOL_APP_CLIENT_RUNTIME, CLIENT_NAME)) != null) {
+        } else if ((j2eePlatform.getToolProperty(J2eePlatform.TOOL_APP_CLIENT_RUNTIME, CLIENT_NAME)) != null) {
             if (projectProps.getProperty(APPCLIENT_MAINCLASS_ARGS) != null) {
                 projectProps.remove(APPCLIENT_MAINCLASS_ARGS);
             }
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml
index 0841d5a..cb18633 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml
@@ -54,6 +54,7 @@
         <file name="application-client-5.xml" url="application-client-5.xml"/>
         <file name="application-client-6.xml" url="application-client-6.xml"/>
         <file name="application-client-7.xml" url="application-client-7.xml"/>
+        <file name="application-client-8.xml" url="application-client-8.xml"/>
         <file name="MANIFEST.MF" url="MANIFEST.MF"/>
     </folder>
     
diff --git a/enterprise/j2ee.common/licenseinfo.xml b/enterprise/j2ee.common/licenseinfo.xml
index 915bad4..4f20738 100644
--- a/enterprise/j2ee.common/licenseinfo.xml
+++ b/enterprise/j2ee.common/licenseinfo.xml
@@ -32,6 +32,7 @@
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-5.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-6.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-7.xml</file>
+        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-8.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-2.3.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-2.4.xml</file>
diff --git a/enterprise/j2ee.common/nbproject/project.properties b/enterprise/j2ee.common/nbproject/project.properties
index a64a92b..a90031e 100644
--- a/enterprise/j2ee.common/nbproject/project.properties
+++ b/enterprise/j2ee.common/nbproject/project.properties
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-javac.source=1.6
-javac.compilerargs=-Xlint:unchecked
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 javadoc.arch=${basedir}/arch.xml
 javadoc.apichanges=${basedir}/apichanges.xml
 
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java
index 45c2b6b..800f1c5 100644
--- a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java
@@ -148,6 +148,17 @@ public final class J2eeProjectCapabilities {
     }
 
     /**
+     * Is CDI 1.0 supported in this project?
+     * @return {@code true} if the project targets EE6 profile, {@code false} otherwise
+     * @since 1.113
+     */
+    public boolean isCdi10Supported() {
+        return Profile.JAVA_EE_6_FULL.equals(ejbJarProfile) ||
+            Profile.JAVA_EE_6_WEB.equals(webProfile) ||
+            Profile.JAVA_EE_6_FULL.equals(ejbJarProfile);
+    }
+    
+    /**
      * Is CDI 1.1 supported in this project?
      * @return {@code true} if the project targets EE7 profile, {@code false} otherwise
      * @since 1.86
@@ -160,6 +171,20 @@ public final class J2eeProjectCapabilities {
             Profile.JAVA_EE_7_FULL.equals(carProfile) ||
             Profile.JAVA_EE_8_FULL.equals(carProfile);
     }
+    
+    /**
+     * Is CDI 2.0 supported in this project?
+     * @return {@code true} if the project targets EE8 profile, {@code false} otherwise
+     * @since 1.113
+     */
+    public boolean isCdi20Supported() {
+        return Profile.JAVA_EE_8_FULL.equals(ejbJarProfile) ||
+            Profile.JAVA_EE_8_WEB.equals(webProfile) ||
+            Profile.JAVA_EE_8_FULL.equals(carProfile) ||
+            Profile.JAKARTA_EE_8_FULL.equals(ejbJarProfile) ||
+            Profile.JAKARTA_EE_8_WEB.equals(webProfile) ||
+            Profile.JAKARTA_EE_8_FULL.equals(carProfile);
+    }
 
     /**
      * Returns <code>true</code> if the server used by project supports EJB lite.
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java
index 2f57fbb..0961d63 100644
--- a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java
@@ -81,10 +81,9 @@ public class DDHelper {
         } else if (Profile.J2EE_13 == j2eeProfile) {
             template = "web-2.3.xml"; //NOI18N
         }
-
         if (template == null)
             return null;
-
+        
         MakeFileCopy action = new MakeFileCopy(RESOURCE_FOLDER + template, dir, "web.xml");
         FileUtil.runAtomicAction(action);
         if (action.getException() != null)
@@ -111,7 +110,6 @@ public class DDHelper {
         } else if (Profile.JAVA_EE_6_FULL == j2eeProfile || Profile.JAVA_EE_6_WEB == j2eeProfile) {
             template = "web-fragment-3.0.xml"; //NOI18N
         }
-
         if (template == null)
             return null;
 
@@ -146,19 +144,15 @@ public class DDHelper {
      */
     public static FileObject createBeansXml(Profile j2eeProfile, FileObject dir, String name) throws IOException {
         String template = null;
-        if (Profile.JAVA_EE_6_FULL == j2eeProfile || Profile.JAVA_EE_6_WEB == j2eeProfile) {
-            template = "beans-1.0.xml"; //NOI18N
-        }
-        if (Profile.JAVA_EE_7_FULL == j2eeProfile || Profile.JAVA_EE_7_WEB == j2eeProfile) {
-            template = "beans-1.1.xml"; //NOI18N
-        }
-        if (Profile.JAVA_EE_8_FULL == j2eeProfile || Profile.JAVA_EE_8_WEB == j2eeProfile) {
-            template = "beans-2.0.xml"; //NOI18N
-        }
         if (Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
             template = "beans-2.0.xml"; //NOI18N
+        } else if (Profile.JAVA_EE_8_FULL == j2eeProfile || Profile.JAVA_EE_8_WEB == j2eeProfile) {
+            template = "beans-2.0.xml"; //NOI18N
+        } else if (Profile.JAVA_EE_7_FULL == j2eeProfile || Profile.JAVA_EE_7_WEB == j2eeProfile) {
+            template = "beans-1.1.xml"; //NOI18N
+        } else if (Profile.JAVA_EE_6_FULL == j2eeProfile || Profile.JAVA_EE_6_WEB == j2eeProfile) {
+            template = "beans-1.0.xml"; //NOI18N
         }
-
         if (template == null)
             return null;
 
@@ -199,7 +193,6 @@ public class DDHelper {
                 Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
             template = "validation.xml"; //NOI18N
         }
-
         if (template == null)
             return null;
 
@@ -240,7 +233,6 @@ public class DDHelper {
                 Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
             template = "constraint.xml"; //NOI18N
         }
-
         if (template == null)
             return null;
 
@@ -267,20 +259,24 @@ public class DDHelper {
     public static FileObject createApplicationXml(final Profile profile, final FileObject dir,
             boolean forceCreation) throws IOException {
         String template = null;
-        if (Profile.J2EE_14.equals(profile) || Profile.J2EE_13.equals(profile)) {
-            template = "ear-1.4.xml"; // NOI18N
-        } else if (Profile.JAVA_EE_5.equals(profile) && forceCreation) {
-            template = "ear-5.xml"; // NOI18N
-        } else if (profile != null && profile.isAtLeast(Profile.JAVA_EE_7_WEB) && forceCreation) {
+        if (profile != null && profile.equals(Profile.JAKARTA_EE_8_FULL) && forceCreation) {
+            template = "ear-8.xml"; // NOI18N
+        } else if (profile != null && profile.equals(Profile.JAVA_EE_8_FULL) && forceCreation) {
+            template = "ear-8.xml"; // NOI18N
+        } else if (profile != null && profile.equals(Profile.JAVA_EE_7_FULL) && forceCreation) {
             template = "ear-7.xml"; // NOI18N
-        } else if (profile != null && profile.isAtLeast(Profile.JAVA_EE_6_WEB) && forceCreation) {
+        } else if (profile != null && profile.equals(Profile.JAVA_EE_6_FULL) && forceCreation) {
             template = "ear-6.xml"; // NOI18N
+        } else if (Profile.JAVA_EE_5.equals(profile) && forceCreation) {
+            template = "ear-5.xml"; // NOI18N
+        } else if (Profile.J2EE_14.equals(profile) || Profile.J2EE_13.equals(profile)) {
+            template = "ear-1.4.xml"; // NOI18N
         }
 
         if (template == null) {
             return null;
         }
-
+        
         MakeFileCopy action = new MakeFileCopy(RESOURCE_FOLDER + template, dir, "application.xml");
         FileUtil.runAtomicAction(action);
         if (action.getException() != null) {
@@ -333,6 +329,7 @@ public class DDHelper {
             return result;
         }
 
+        @Override
         public void run() {
             try {
                 // PENDING : should be easier to define in layer and copy related FileObject (doesn't require systemClassLoader)
@@ -343,11 +340,9 @@ public class DDHelper {
                 String content = readResource(DDHelper.class.getResourceAsStream(fromFile));
                 if (content != null) {
                     FileLock lock = xml.lock();
-                    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(xml.getOutputStream(lock)));
-                    try {
+                    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(xml.getOutputStream(lock)))) {
                         bw.write(content);
                     } finally {
-                        bw.close();
                         lock.releaseLock();
                     }
                 }
@@ -361,16 +356,13 @@ public class DDHelper {
         private String readResource(InputStream is) throws IOException {
             StringBuilder sb = new StringBuilder();
             String lineSep = System.getProperty("line.separator"); // NOI18N
-            BufferedReader br = new BufferedReader(new InputStreamReader(is));
-            try {
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
                 String line = br.readLine();
                 while (line != null) {
                     sb.append(line);
                     sb.append(lineSep);
                     line = br.readLine();
                 }
-            } finally {
-                br.close();
             }
             return sb.toString();
         }
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/ear-8.xml b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/ear-8.xml
new file mode 100644
index 0000000..2e82f73
--- /dev/null
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/ear-8.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+            version="8"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd">
+
+</application>
diff --git a/enterprise/j2ee.core/nbproject/project.properties b/enterprise/j2ee.core/nbproject/project.properties
index ec88e79..f49eb50 100644
--- a/enterprise/j2ee.core/nbproject/project.properties
+++ b/enterprise/j2ee.core/nbproject/project.properties
@@ -16,7 +16,7 @@
 # under the License.
 
 javac.compilerargs=-Xlint -Xlint:-serial
-javac.source=1.6
+javac.source=1.8
 
 is.autoload=true
 
diff --git a/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java b/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java
index f90b6d3..2203b2c 100644
--- a/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java
+++ b/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java
@@ -63,7 +63,7 @@ public final class Profile {
 
     public static final Profile JAKARTA_EE_8_WEB  = new Profile(10, "8.0", "web", "JakartaEE8Web.displayName");
 
-    public static final Profile JAKARTA_EE_8_FULL  = new Profile(11, "8.0", "web", "JakartaEE8Full.displayName");
+    public static final Profile JAKARTA_EE_8_FULL  = new Profile(11, "8.0", null, "JakartaEE8Full.displayName");
 
     private final int order;
 
diff --git a/enterprise/j2ee.dd.webservice/nbproject/project.properties b/enterprise/j2ee.dd.webservice/nbproject/project.properties
index 3c4a6d3..562e263 100644
--- a/enterprise/j2ee.dd.webservice/nbproject/project.properties
+++ b/enterprise/j2ee.dd.webservice/nbproject/project.properties
@@ -17,8 +17,8 @@
 
 is.autoload=true
 
-javac.compilerargs=-Xlint:unchecked
-javac.source=1.6
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 javadoc.apichanges=${basedir}/apichanges.xml
 javadoc.arch=${basedir}/arch.xml
 javadoc.docfiles=${basedir}/doc
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java
index 0467c22..3cbcd70 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java
@@ -42,6 +42,11 @@ public interface Application extends org.netbeans.modules.j2ee.dd.api.common.Roo
          * @since 1.29
          */
         public static final String VERSION_7 = "7"; //NOI18N
+        /**
+         * application.xml DD version for JavaEE8
+         * @since 2
+         */
+        public static final String VERSION_8 = "8"; //NOI18N
         public static final int STATE_VALID=0;
         public static final int STATE_INVALID_PARSABLE=1;
         public static final int STATE_INVALID_UNPARSABLE=2;
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java
index 43abe8f..a2086d3 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java
@@ -85,6 +85,7 @@ public final class DDProvider {
      * 
      * @param fo FileObject representing the application.xml file
      * @return Application object - root of the deployment descriptor bean graph
+     * @throws IOException
      */
     public synchronized Application getDDRoot(FileObject fo) throws IOException {
         if (fo == null) {
@@ -179,6 +180,7 @@ public final class DDProvider {
      * for writing the changes.
      * @param fo FileObject representing the application.xml file
      * @return Application object - root of the deployment descriptor bean graph
+     * @throws IOException
      */
     public Application getDDRootCopy(FileObject fo) throws IOException {
         return (Application)getDDRoot(fo).clone();
@@ -193,6 +195,8 @@ public final class DDProvider {
      *
      * @param is source representing the application.xml file
      * @return Application object - root of the deployment descriptor bean graph
+     * @throws IOException
+     * @throws SAXException
      */    
     public Application getDDRoot(InputSource is) throws IOException, SAXException {
         DDParse parse = parseDD(is);
@@ -205,6 +209,8 @@ public final class DDProvider {
     // PENDING j2eeserver needs BaseBean - this is a temporary workaround to avoid dependency of web project on DD impl
     /** 
      * Convenient method for getting the BaseBean object from CommonDDBean object.
+     * @param bean
+     * @return 
      */
     public BaseBean getBaseBean(CommonDDBean bean) {
         if (bean instanceof BaseBean) {
@@ -225,19 +231,21 @@ public final class DDProvider {
         }
     }
     
-    private static Application createApplication(DDParse parse) {        
-          Application jar = null;
-          String version = parse.getVersion();
-          if (Application.VERSION_1_4.equals(version)) {
-              return new org.netbeans.modules.j2ee.dd.impl.application.model_1_4.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
-          } else if (Application.VERSION_5.equals(version)) {
-              return new org.netbeans.modules.j2ee.dd.impl.application.model_5.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
-          } else if (Application.VERSION_6.equals(version)) {
-              return new org.netbeans.modules.j2ee.dd.impl.application.model_6.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
-          } else if (Application.VERSION_7.equals(version)) {
-              return new org.netbeans.modules.j2ee.dd.impl.application.model_7.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
-          }
-          return jar;
+    private static Application createApplication(DDParse parse) {
+        Application jar = null;
+        String version = parse.getVersion();
+        if (Application.VERSION_1_4.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.application.model_1_4.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
+        } else if (Application.VERSION_5.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.application.model_5.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
+        } else if (Application.VERSION_6.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.application.model_6.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
+        } else if (Application.VERSION_7.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.application.model_7.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
+        } else if (Application.VERSION_8.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.application.model_8.Application(parse.getDocument(),  Common.USE_DEFAULT_VALUES);
+        }
+        return jar;
     }
     
     private static class DDResolver implements EntityResolver {
@@ -248,6 +256,7 @@ public final class DDProvider {
             }
             return resolver;
         }        
+        @Override
         public InputSource resolveEntity (String publicId, String systemId) {
             if ("http://java.sun.com/xml/ns/j2ee/application_1_4.xsd".equals(systemId)) {
                 return new InputSource("nbres:/org/netbeans/modules/j2ee/dd/impl/resources/application_1_4.xsd"); //NOI18N
@@ -257,6 +266,8 @@ public final class DDProvider {
                 return new InputSource("nbres:/org/netbeans/modules/javaee/dd/impl/resources/application_6.xsd"); //NOI18N
             } else if ("http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd".equals(systemId)) {
                 return new InputSource("nbres:/org/netbeans/modules/javaee/dd/impl/resources/application_7.xsd"); //NOI18N
+            } else if ("http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd".equals(systemId)) {
+                return new InputSource("nbres:/org/netbeans/modules/javaee/dd/impl/resources/application_8.xsd"); //NOI18N
             } else {
                 // use the default behaviour
                 return null;
@@ -268,6 +279,7 @@ public final class DDProvider {
         private int errorType=-1;
         SAXParseException error;
 
+        @Override
         public void warning(SAXParseException sAXParseException) throws SAXException {
             if (errorType<0) {
                 errorType=0;
@@ -275,6 +287,7 @@ public final class DDProvider {
             }
             //throw sAXParseException;
         }
+        @Override
         public void error(SAXParseException sAXParseException) throws SAXException {
             if (errorType<1) {
                 errorType=1;
@@ -282,6 +295,7 @@ public final class DDProvider {
             }
             //throw sAXParseException;
         }        
+        @Override
         public void fatalError(SAXParseException sAXParseException) throws SAXException {
             errorType=2;
             throw sAXParseException;
@@ -303,11 +317,8 @@ public final class DDProvider {
     
     private DDParse parseDD (FileObject fo) 
     throws SAXException, IOException {
-        InputStream inputStream = fo.getInputStream();
-        try {
+        try (InputStream inputStream = fo.getInputStream()) {
             return parseDD(inputStream);
-        } finally {
-            inputStream.close();
         }
     }
     
@@ -373,12 +384,16 @@ public final class DDProvider {
                     Node vNode = attrs.getNamedItem("version");//NOI18N
                     if(vNode != null) {
                         String versionValue = vNode.getNodeValue();
-                        if (Application.VERSION_1_4.equals(versionValue)) {
-                            version = Application.VERSION_1_4;
-                        } else if (Application.VERSION_5.equals(versionValue)) {
-                            version = Application.VERSION_5;
+                        if (Application.VERSION_8.equals(versionValue)) {
+                            version = Application.VERSION_8;
+                        } else if (Application.VERSION_7.equals(versionValue)) {
+                            version = Application.VERSION_7;
                         } else if (Application.VERSION_6.equals(versionValue)) {
                             version = Application.VERSION_6;
+                        } else if (Application.VERSION_5.equals(versionValue)) {
+                            version = Application.VERSION_5;
+                        } else if (Application.VERSION_1_4.equals(versionValue)) {
+                            version = Application.VERSION_1_4;
                         } else {
                             version = Application.VERSION_7; //default
                         }
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java
index 923ef22..ba68a49 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java
@@ -43,6 +43,7 @@ public interface AppClient extends RootInterface {
      * @since 1.29
      */
     public static final String VERSION_7_0 = "7"; //NOI18N
+    public static final String VERSION_8_0 = "8"; //NOI18N
     public static final int STATE_VALID=0;
     public static final int STATE_INVALID_PARSABLE=1;
     public static final int STATE_INVALID_UNPARSABLE=2;
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/common/RootInterface.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/common/RootInterface.java
index 24ec35b..a943b7d 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/common/RootInterface.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/common/RootInterface.java
@@ -51,6 +51,7 @@ public interface RootInterface extends ComponentInterface {
      * The locking problems are solved for the user in this method.
      *
      * @param fo File Object where to write the content of depl.descriptor holding in bean tree structure
+     * @throws java.io.IOException
      */
     public void write(org.openide.filesystems.FileObject fo) throws java.io.IOException ;
     
@@ -69,7 +70,7 @@ public interface RootInterface extends ComponentInterface {
      *		MERGE_UNION is 	G1 U G2 <=> G1 + E2
      *		MERGE_INTERSECT is	G1 n G2 <=> (G1 U G2) - E1 - E2
      *</pre>
-     * @param bean root of the bean graph that is merged with actual bean graph
+     * @param root of the bean graph that is merged with actual bean graph
      * @param mode type of merging (INTERSECT, UNION, UPDATE)
      */
     public void merge(RootInterface root, int mode);
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/ejb/DDProvider.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/ejb/DDProvider.java
index 5038f72..dc75485 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/ejb/DDProvider.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/ejb/DDProvider.java
@@ -57,6 +57,9 @@ import org.openide.util.Exceptions;
 
 public final class DDProvider {
     private static final String EJB_21_DOCTYPE = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"; //NOI18N
+    private static final String EJB_30_DOCTYPE = "http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"; //NOI18N
+    private static final String EJB_31_DOCTYPE = "http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"; //NOI18N
+    private static final String EJB_32_DOCTYPE = "http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"; //NOI18N
     private static final DDProvider ddProvider = new DDProvider();
     private final Map<Object, EjbJarProxy> ddMap;
 
@@ -82,6 +85,7 @@ public final class DDProvider {
      * or to listen to the changes.
      * @param fo FileObject representing the ejb-jar.xml file
      * @return EjbJar object - root of the deployment descriptor bean graph
+     * @throws IOException
      */
     public synchronized EjbJar getDDRoot(FileObject fo) throws java.io.IOException {
         if (fo == null) {
@@ -136,6 +140,7 @@ public final class DDProvider {
      * for writing the changes.
      * @param fo FileObject representing the ejb-jar.xml file
      * @return EjbJar object - root of the deployment descriptor bean graph
+     * @throws IOException
      */
     public EjbJar getDDRootCopy(FileObject fo) throws java.io.IOException {
         return (EjbJar)getDDRoot(fo).clone();
@@ -154,6 +159,8 @@ public final class DDProvider {
      *
      * @param inputSource source representing the ejb-jar.xml file
      * @return EjbJar object - root of the deployment descriptor bean graph
+     * @throws IOException
+     * @throws SAXException
      */
     public EjbJar getDDRoot(InputSource inputSource) throws IOException, SAXException {
         ErrorHandler errorHandler = new ErrorHandler();
@@ -176,6 +183,8 @@ public final class DDProvider {
     // PENDING j2eeserver needs BaseBean - this is a temporary workaround to avoid dependency of web project on DD impl
     /**  Convenient method for getting the BaseBean object from CommonDDBean object
      *
+     * @param bean
+     * @return 
      */
     public BaseBean getBaseBean(CommonDDBean bean) {
         if (bean instanceof BaseBean) {
@@ -187,7 +196,11 @@ public final class DDProvider {
     }
 
     private static EjbJar createEjbJar(String version, Document document) {
-        if (EjbJar.VERSION_3_0.equals(version)) {
+        if (EjbJar.VERSION_3_2.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.ejb.model_3_2.EjbJar(document, Common.USE_DEFAULT_VALUES);
+        } else if (EjbJar.VERSION_3_1.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.ejb.model_3_1.EjbJar(document, Common.USE_DEFAULT_VALUES);
+        } else if (EjbJar.VERSION_3_0.equals(version)) {
             return new org.netbeans.modules.j2ee.dd.impl.ejb.model_3_0.EjbJar(document, Common.USE_DEFAULT_VALUES);
         } else if (EjbJar.VERSION_2_1.equals(version)) {
             return new org.netbeans.modules.j2ee.dd.impl.ejb.model_2_1.EjbJar(document, Common.USE_DEFAULT_VALUES);
@@ -213,13 +226,18 @@ public final class DDProvider {
                 id = schemaLocation.substring(schemaLocation.lastIndexOf(" ") + 1);
             }
         }
-        // This is the default version
         if (id != null) {
-            if (EJB_21_DOCTYPE.equals(id)) {
+            if(EJB_32_DOCTYPE.equals(id)) {
+                return EjbJar.VERSION_3_2;
+            } else if (EJB_31_DOCTYPE.equals(id)) {
+                return EjbJar.VERSION_3_1;
+            } else if (EJB_30_DOCTYPE.equals(id)) {
+                return EjbJar.VERSION_3_0;
+            } else if (EJB_21_DOCTYPE.equals(id)) {
                 return EjbJar.VERSION_2_1;
             }
         }
-        return EjbJar.VERSION_3_0;
+        return EjbJar.VERSION_3_2;
 
     }
 
@@ -245,13 +263,23 @@ public final class DDProvider {
             return resolver;
         }
 
+        /**
+         * Return a proper input source
+         * @param publicId
+         * @param systemId
+         * @return 
+         */
+        @Override
         public InputSource resolveEntity(String publicId, String systemId) {
-            // return a proper input source
             String resource;
-            if ("http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd".equals(systemId)) {
-                resource = "/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_2_1.xsd"; //NOI18N
-            } else if ("http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd".equals(systemId)) {
+            if (EJB_32_DOCTYPE.equals(systemId)) {
+                resource = "/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_2.xsd"; //NOI18N
+            } else if (EJB_31_DOCTYPE.equals(systemId)) {
+                resource = "/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_1.xsd"; //NOI18N
+            } else if (EJB_30_DOCTYPE.equals(systemId)) {
                 resource = "/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_0.xsd"; //NOI18N
+            } else if (EJB_21_DOCTYPE.equals(systemId)) {
+                resource = "/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_2_1.xsd"; //NOI18N
             } else {
                 return null;
             }
@@ -264,6 +292,7 @@ public final class DDProvider {
         private int errorType=-1;
         SAXParseException error;
 
+        @Override
         public void warning(org.xml.sax.SAXParseException sAXParseException) throws org.xml.sax.SAXException {
             if (errorType<0) {
                 errorType=0;
@@ -271,6 +300,7 @@ public final class DDProvider {
             }
             //throw sAXParseException;
         }
+        @Override
         public void error(org.xml.sax.SAXParseException sAXParseException) throws org.xml.sax.SAXException {
             if (errorType<1) {
                 errorType=1;
@@ -278,6 +308,7 @@ public final class DDProvider {
             }
             //throw sAXParseException;
         }
+        @Override
         public void fatalError(org.xml.sax.SAXParseException sAXParseException) throws org.xml.sax.SAXException {
             errorType=2;
             throw sAXParseException;
@@ -299,15 +330,12 @@ public final class DDProvider {
                 synchronized (ddMap) {
                     EjbJarProxy ejbJarProxy = getFromCache(fo);
                     if (ejbJarProxy != null) {
-                        InputStream inputStream = fo.getInputStream();
-                        try {
+                        try (InputStream inputStream = fo.getInputStream()) {
                             String encoding = EncodingUtil.detectEncoding(new BufferedInputStream(inputStream));
                             if (encoding == null) {
                                 encoding = "UTF8";
                             }
                             DDUtils.merge(ejbJarProxy, new InputStreamReader(inputStream, encoding));
-                        } finally {
-                            inputStream.close();
                         }
                     }
                 }
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java
index aca5d25..fd3aa67 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java
@@ -79,19 +79,19 @@ public final class WebFragmentProvider {
 
     private WebFragment createWebFragment(FileObject fo, String version) throws IOException, SAXException {
         try {
-            if (WebFragment.VERSION_3_0.equals(version)) {
-                InputStream inputStream = fo.getInputStream();
-                try {
-                    return org.netbeans.modules.j2ee.dd.impl.web.model_3_0_frag.WebFragment.createGraph(inputStream);
-                } finally {
-                    inputStream.close();
-                }
-            } else if (WebFragment.VERSION_3_1.equals(version)) {
-                InputStream inputStream = fo.getInputStream();
-                try {
+//            TODO
+//            if (WebFragment.VERSION_4_0.equals(version)) {
+//                try (InputStream inputStream = fo.getInputStream()) {
+//                    return org.netbeans.modules.j2ee.dd.impl.web.model_4_0_frag.WebFragment.createGraph(inputStream);
+//                }
+//            }
+            if (WebFragment.VERSION_3_1.equals(version)) {
+                try (InputStream inputStream = fo.getInputStream()) {
                     return org.netbeans.modules.j2ee.dd.impl.web.model_3_1_frag.WebFragment.createGraph(inputStream);
-                } finally {
-                    inputStream.close();
+                }
+            } else if (WebFragment.VERSION_3_0.equals(version)) {
+                try (InputStream inputStream = fo.getInputStream()) {
+                    return org.netbeans.modules.j2ee.dd.impl.web.model_3_0_frag.WebFragment.createGraph(inputStream);
                 }
             } else {
                 throw new IOException("Unsupported version of web-fragment.xml found! Version: "+version);
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java
index f5aa051..e20bf19 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java
@@ -40,16 +40,14 @@ import org.openide.filesystems.FileObject;
  * @author pfiala
  */
 public class DDUtils {
+    
     public static EjbJarProxy createEjbJarProxy(InputStream inputStream) throws IOException {
         return createEjbJarProxy(new InputSource(inputStream));
     }
 
     public static EjbJarProxy createEjbJarProxy(FileObject fo) throws IOException {
-        InputStream inputStream = fo.getInputStream();
-        try {
+        try (InputStream inputStream = fo.getInputStream()) {
             return createEjbJarProxy(new InputSource(inputStream));
-        } finally {
-            inputStream.close();
         }
     }
 
@@ -132,11 +130,8 @@ public class DDUtils {
     }
 
     public static WebApp createWebApp(FileObject fo, String version) throws IOException, SAXException {
-        InputStream inputStream = fo.getInputStream();
-        try {
+        try (InputStream inputStream = fo.getInputStream()) {
             return createWebApp(inputStream, version);
-        } finally {
-            inputStream.close();
         }
     }
 
@@ -150,6 +145,8 @@ public class DDUtils {
                 return org.netbeans.modules.j2ee.dd.impl.client.model_6_0.ApplicationClient.createGraph(is);
             } else if (AppClient.VERSION_7_0.equals(version)) {
                 return org.netbeans.modules.j2ee.dd.impl.client.model_7_0.ApplicationClient.createGraph(is);
+            } else if (AppClient.VERSION_8_0.equals(version)) {
+                return org.netbeans.modules.j2ee.dd.impl.client.model_8_0.ApplicationClient.createGraph(is);
             }
         } catch (RuntimeException ex) {
             throw new SAXException(ex);
@@ -158,11 +155,8 @@ public class DDUtils {
     }
 
     public static AppClient createAppClient(FileObject fo, String version) throws IOException, SAXException {
-        InputStream inputStream = fo.getInputStream();
-        try {
+        try (InputStream inputStream = fo.getInputStream()) {
             return createAppClient(inputStream, version);
-        } finally {
-            inputStream.close();
         }
     }
 }
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/EjbJarProxy.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/EjbJarProxy.java
index 5b7f44b..5f0a481 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/EjbJarProxy.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/EjbJarProxy.java
@@ -87,6 +87,7 @@ public class EjbJarProxy implements EjbJar {
      * Warning : Only the upgrade from lower to higher version is supported.
      * @param version ejb-jar version value
      */
+    @Override
     public void setVersion(java.math.BigDecimal version) {
        String newVersion = version.toString();
         if (this.version.equals(newVersion)){
@@ -140,22 +141,25 @@ public class EjbJarProxy implements EjbJar {
                         "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"); //NOI18N
     }
 
+    @Override
     public java.math.BigDecimal getVersion() {
         return version == null ? BigDecimal.valueOf(0) : new BigDecimal(version);
     }
+    @Override
     public org.xml.sax.SAXParseException getError() {
         return error;
     }
     public void setError(org.xml.sax.SAXParseException error) {
         this.error=error;
     }
+    @Override
     public int getStatus() {
         return ddStatus;
     }
     public void setStatus(int value) {
         if (ddStatus!=value) {
             java.beans.PropertyChangeEvent evt =
-                new java.beans.PropertyChangeEvent(this, PROPERTY_STATUS, new Integer(ddStatus), new Integer(value));
+                new java.beans.PropertyChangeEvent(this, PROPERTY_STATUS, ddStatus, value);
             ddStatus=value;
             for (int i=0;i<listeners.size();i++) {
                 ((java.beans.PropertyChangeListener)listeners.get(i)).propertyChange(evt);
@@ -163,88 +167,109 @@ public class EjbJarProxy implements EjbJar {
         }
     }
 
+    @Override
     public void addPropertyChangeListener(java.beans.PropertyChangeListener pcl) {
         if (ejbJar!=null) ejbJar.addPropertyChangeListener(pcl);
         listeners.add(pcl);
     }
 
+    @Override
     public void removePropertyChangeListener(java.beans.PropertyChangeListener pcl) {
         if (ejbJar!=null) ejbJar.removePropertyChangeListener(pcl);
         listeners.remove(pcl);
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.common.CommonDDBean createBean(String beanName) throws ClassNotFoundException {
         return ejbJar==null?null:ejbJar.createBean(beanName);
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.common.CommonDDBean addBean(String beanName, String[] propertyNames, Object[] propertyValues, String keyProperty) throws ClassNotFoundException, org.netbeans.modules.j2ee.dd.api.common.NameAlreadyUsedException {
         return ejbJar==null?null:ejbJar.addBean(beanName, propertyNames, propertyValues, keyProperty);
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.common.CommonDDBean addBean(String beanName) throws ClassNotFoundException {
         return ejbJar==null?null:ejbJar.addBean(beanName);
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.common.CommonDDBean findBeanByName(String beanName, String propertyName, String value) {
         return ejbJar==null?null:ejbJar.findBeanByName(beanName, propertyName, value);
     }
 
+    @Override
     public java.util.Map getAllDescriptions() {
         return ejbJar==null?new java.util.HashMap():ejbJar.getAllDescriptions();
     }
 
+    @Override
     public java.util.Map getAllDisplayNames() {
         return ejbJar==null?new java.util.HashMap():ejbJar.getAllDisplayNames();
     }
 
+    @Override
     public java.util.Map getAllIcons() {
         return ejbJar==null?new java.util.HashMap():ejbJar.getAllIcons();
     }
 
+    @Override
     public String getDefaultDescription() {
         return ejbJar==null?null:ejbJar.getDefaultDescription();
     }
 
+    @Override
     public String getDefaultDisplayName() {
         return ejbJar==null?null:ejbJar.getDefaultDisplayName();
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.common.Icon getDefaultIcon() {
         return ejbJar==null?null:ejbJar.getDefaultIcon();
     }
 
+    @Override
     public String getDescription(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         return ejbJar==null?null:ejbJar.getDescription(locale);
     }
 
+    @Override
     public String getDisplayName(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         return ejbJar==null?null:ejbJar.getDisplayName(locale);
     }
 
+    @Override
     public java.lang.String getId() {
         return ejbJar==null?null:ejbJar.getId();
     }
 
+    @Override
     public String getLargeIcon() {
         return ejbJar==null?null:ejbJar.getLargeIcon();
     }
 
+    @Override
     public String getLargeIcon(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         return ejbJar==null?null:ejbJar.getLargeIcon(locale);
     }
 
+    @Override
     public String getSmallIcon() {
         return ejbJar==null?null:ejbJar.getSmallIcon();
     }
 
+    @Override
     public String getSmallIcon(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         return ejbJar==null?null:ejbJar.getSmallIcon(locale);
     }
 
+    @Override
     public Object getValue(String name) {
         return ejbJar==null?null:ejbJar.getValue(name);
     }
 
+    @Override
     public void merge(org.netbeans.modules.j2ee.dd.api.common.RootInterface bean, int mode) {
         if (bean instanceof EjbJarProxy) {
             bean = ((EjbJarProxy) bean).getOriginal();
@@ -261,111 +286,138 @@ public class EjbJarProxy implements EjbJar {
         }
     }
 
+    @Override
     public void removeAllDescriptions() {
 
         if (ejbJar!=null) ejbJar.removeAllDescriptions();
     }
 
+    @Override
     public void removeAllDisplayNames() {
         if (ejbJar!=null) ejbJar.removeAllDisplayNames();
     }
 
+    @Override
     public void removeAllIcons() {
         if (ejbJar!=null) ejbJar.removeAllIcons();
     }
 
+    @Override
     public void removeDescription() {
         if (ejbJar!=null) ejbJar.removeDescription();
     }
 
+    @Override
     public void removeDescriptionForLocale(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.removeDescriptionForLocale(locale);
     }
 
+    @Override
     public void removeDisplayName() {
         if (ejbJar!=null) ejbJar.removeDisplayName();
     }
 
+    @Override
     public void removeDisplayNameForLocale(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.removeDisplayNameForLocale(locale);
     }
 
+    @Override
     public void removeIcon() {
         if (ejbJar!=null) ejbJar.removeIcon();
     }
 
+    @Override
     public void removeIcon(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.removeIcon(locale);
     }
 
+    @Override
     public void removeLargeIcon() {
         if (ejbJar!=null) ejbJar.removeLargeIcon();
     }
 
+    @Override
     public void removeLargeIcon(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.removeLargeIcon(locale);
     }
 
+    @Override
     public void removeSmallIcon() {
         if (ejbJar!=null) ejbJar.removeSmallIcon();
     }
 
+    @Override
     public void removeSmallIcon(String locale) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.removeSmallIcon(locale);
     }
 
+    @Override
     public void setAllDescriptions(java.util.Map descriptions) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setAllDescriptions(descriptions);
     }
 
+    @Override
     public void setAllDisplayNames(java.util.Map displayNames) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setAllDisplayNames(displayNames);
     }
 
+    @Override
     public void setAllIcons(String[] locales, String[] smallIcons, String[] largeIcons) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setAllIcons(locales, smallIcons, largeIcons);
     }
 
+    @Override
     public void setDescription(String description) {
         if (ejbJar!=null) ejbJar.setDescription(description);
     }
 
+    @Override
     public void setDescription(String locale, String description) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setDescription(locale, description);
     }
 
+    @Override
     public void setDisplayName(String displayName) {
         if (ejbJar!=null) ejbJar.setDisplayName(displayName);
     }
 
+    @Override
     public void setDisplayName(String locale, String displayName) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setDisplayName(locale, displayName);
     }
 
+    @Override
     public void setIcon(org.netbeans.modules.j2ee.dd.api.common.Icon icon) {
         if (ejbJar!=null) ejbJar.setIcon(icon);
     }
 
+    @Override
     public void setId(java.lang.String value) {
         if (ejbJar!=null) ejbJar.setId(value);
     }
 
+    @Override
     public void setLargeIcon(String icon) {
         if (ejbJar!=null) ejbJar.setLargeIcon(icon);
     }
 
+    @Override
     public void setLargeIcon(String locale, String icon) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setLargeIcon(locale, icon);
     }
 
+    @Override
     public void setSmallIcon(String icon) {
         if (ejbJar!=null) ejbJar.setSmallIcon(icon);
     }
 
+    @Override
     public void setSmallIcon(String locale, String icon) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setSmallIcon(locale, icon);
     }
 
+    @Override
     public void write(java.io.OutputStream os) throws java.io.IOException {
         if (ejbJar!=null) {
             writing=true;
@@ -373,6 +425,7 @@ public class EjbJarProxy implements EjbJar {
         }
     }
 
+    @Override
     public void write(FileObject fo) throws java.io.IOException {
         if (ejbJar != null) {
             DataObject dataObject = DataObject.find(fo);
@@ -381,12 +434,9 @@ public class EjbJarProxy implements EjbJar {
             } else {
                 FileLock lock = fo.lock();
                 try {
-                    OutputStream os = fo.getOutputStream(lock);
-                    try {
+                    try (OutputStream os = fo.getOutputStream(lock)) {
                         writing = true;
                         write(os);
-                    } finally {
-                        os.close();
                     }
                 } finally {
                     lock.releaseLock();
@@ -403,16 +453,23 @@ public class EjbJarProxy implements EjbJar {
         else {
             EjbJar clonedEjbJar=(EjbJar)ejbJar.clone();
             proxy = new EjbJarProxy(clonedEjbJar,version);
-            if (EjbJar.VERSION_2_1.equals(version)) {
+            if (EjbJar.VERSION_3_2.equals(version)) {
+                ((org.netbeans.modules.j2ee.dd.impl.ejb.model_3_2.EjbJar)clonedEjbJar)._setSchemaLocation
+                    ("http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd");
+                clonedEjbJar.setVersion(new java.math.BigDecimal(EjbJar.VERSION_3_2));
+            } else if (EjbJar.VERSION_3_1.equals(version)) {
+                ((org.netbeans.modules.j2ee.dd.impl.ejb.model_3_1.EjbJar)clonedEjbJar)._setSchemaLocation
+                    ("http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_1.xsd");
+                clonedEjbJar.setVersion(new java.math.BigDecimal(EjbJar.VERSION_3_1));
+            } else if (EjbJar.VERSION_3_0.equals(version)) {
+                ((org.netbeans.modules.j2ee.dd.impl.ejb.model_3_0.EjbJar)clonedEjbJar)._setSchemaLocation
+                    ("http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_0.xsd");
+                clonedEjbJar.setVersion(new java.math.BigDecimal(EjbJar.VERSION_3_0));
+            } else if (EjbJar.VERSION_2_1.equals(version)) {
                 ((org.netbeans.modules.j2ee.dd.impl.ejb.model_2_1.EjbJar)clonedEjbJar)._setSchemaLocation
                     ("http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd");
                 clonedEjbJar.setVersion(new java.math.BigDecimal(EjbJar.VERSION_2_1));
             }
-            else if (EjbJar.VERSION_3_0.equals(version)) {
-                ((org.netbeans.modules.j2ee.dd.impl.ejb.model_3_0.EjbJar)clonedEjbJar)._setSchemaLocation
-                    ("http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_0.xsd");
-                clonedEjbJar.setVersion(new java.math.BigDecimal(EjbJar.VERSION_3_0));
-            }
         }
         proxy.setError(error);
         proxy.setStatus(ddStatus);
@@ -427,38 +484,47 @@ public class EjbJarProxy implements EjbJar {
         this.writing=writing;
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans getEnterpriseBeans() {
         return ejbJar==null?null:ejbJar.getEnterpriseBeans();
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.ejb.AssemblyDescriptor getSingleAssemblyDescriptor() {
         return ejbJar==null?null:ejbJar.getSingleAssemblyDescriptor();
     }
 
+    @Override
     public String getSingleEjbClientJar() {
         return ejbJar==null?null:ejbJar.getSingleEjbClientJar();
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.ejb.Relationships getSingleRelationships() {
         return ejbJar==null?null:ejbJar.getSingleRelationships();
     }
 
+    @Override
     public void setAssemblyDescriptor(org.netbeans.modules.j2ee.dd.api.ejb.AssemblyDescriptor value) {
         if (ejbJar!=null) ejbJar.setAssemblyDescriptor(value);
     }
 
+    @Override
     public void setEjbClientJar(String value) {
         if (ejbJar!=null) ejbJar.setEjbClientJar(value);
     }
 
+    @Override
     public void setEnterpriseBeans(org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans value) {
         if (ejbJar!=null) ejbJar.setEnterpriseBeans(value);
     }
 
+    @Override
     public void setRelationships(org.netbeans.modules.j2ee.dd.api.ejb.Relationships value) {
         if (ejbJar!=null) ejbJar.setRelationships(value);
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.ejb.AssemblyDescriptor newAssemblyDescriptor() {
         if(ejbJar == null)
             return null;
@@ -466,6 +532,7 @@ public class EjbJarProxy implements EjbJar {
             return ejbJar.newAssemblyDescriptor();
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans newEnterpriseBeans() {
         if(ejbJar == null)
             return null;
@@ -473,6 +540,7 @@ public class EjbJarProxy implements EjbJar {
             return ejbJar.newEnterpriseBeans();
     }
 
+    @Override
     public org.netbeans.modules.j2ee.dd.api.ejb.Relationships newRelationships() {
         if(ejbJar == null)
             return null;
@@ -480,10 +548,12 @@ public class EjbJarProxy implements EjbJar {
             return ejbJar.newRelationships();
     }
 
+    @Override
     public void setInterceptors(Interceptors valueInterface) throws VersionNotSupportedException {
         if (ejbJar!=null) ejbJar.setInterceptors(valueInterface);
     }
 
+    @Override
     public Interceptors newInterceptors() throws VersionNotSupportedException {
         if(ejbJar == null)
             return null;
@@ -491,6 +561,7 @@ public class EjbJarProxy implements EjbJar {
             return ejbJar.newInterceptors();
     }
 
+    @Override
     public Interceptors getInterceptors() throws VersionNotSupportedException {
         if(ejbJar == null)
             return null;
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_8.mdd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_8.mdd
index 47b45b9..ab6831a 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_8.mdd
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_8.mdd
@@ -1,865 +1,409 @@
 <?xml version='1.0' encoding='UTF-8' ?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 2013, 2016 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+
+Contributor(s):
+-->
 <metaDD>
 	<meta-element>
 		<dtd-name>application-client</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
 		<bean-name>ApplicationClient</bean-name>
-		<meta-property>
-			<bean-name>ModuleName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntry</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceEnvRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PostConstruct</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PreDestroy</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>CallbackHandler</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestination</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DataSource</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>JmsConnectionFactory</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>JmsDestination</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MailSession</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ConnectionFactory</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>AdministeredObject</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>string</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>String</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>env-entryType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EnvEntryType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntryName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntryType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntryValue</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Home</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Remote</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbLink</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>resource-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResourceRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResAuth</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResSharingScope</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>resource-env-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResourceEnvRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceEnvRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceEnvRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationUsage</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationLink</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
+		<implements>org.netbeans.modules.j2ee.dd.api.client.AppClient</implements>
+                <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+                <user-code>
+                    public org.xml.sax.SAXParseException getError() {
+                        return null;
+                    }
+                    public int getStatus() {
+                        return STATE_VALID;
+                    }
+                    public void setVersion(java.math.BigDecimal value) {
+                            setAttributeValue(VERSION, value.toString());
+                    }
+                    public java.math.BigDecimal getVersion() {
+                            return new java.math.BigDecimal(getAttributeValue(VERSION));
+                    }
+                </user-code>
+	</meta-element>
+	<meta-element>
+            <dtd-name>env-entryType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>EnvEntry</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.EnvEntry, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "EnvEntryName"; }
+            </user-code>
+	</meta-element>
+	<meta-element>
+            <dtd-name>ejb-refType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>EjbRef</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.EjbRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "EjbRefName"; }
+            </user-code>
+	</meta-element>
+	<meta-element>
+            <dtd-name>resource-refType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ResourceRef</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.ResourceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "ResRefName"; }
+            </user-code>
+	</meta-element>
+	<meta-element>
+            <dtd-name>resource-env-refType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ResourceEnvRef</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.ResourceEnvRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "ResourceEnvRefName"; }
+            </user-code>
+	</meta-element>
+	<meta-element>
+            <dtd-name>message-destination-refType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>MessageDestinationRef</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.MessageDestinationRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "MessageDestinationRefName"; }
+            </user-code>
+        </meta-element>
+	<meta-element>
+		<dtd-name>persistence-context-refType</dtd-name>
+		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+		<bean-name>PersistenceContextRefType</bean-name>
 	</meta-element>
 	<meta-element>
 		<dtd-name>persistence-unit-refType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
 		<bean-name>PersistenceUnitRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
 	</meta-element>
 	<meta-element>
 		<dtd-name>lifecycle-callbackType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
 		<bean-name>LifecycleCallbackType</bean-name>
-		<meta-property>
-			<bean-name>LifecycleCallbackClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LifecycleCallbackMethod</bean-name>
-		</meta-property>
 	</meta-element>
 	<meta-element>
 		<dtd-name>fully-qualified-classType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>FullyQualifiedClassType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destinationType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>data-sourceType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>DataSourceType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServerName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortNumber</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DatabaseName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Url</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>User</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Password</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LoginTimeout</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Transactional</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>IsolationLevel</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InitialPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MinPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxIdleTime</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxStatements</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jms-connection-factoryType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JmsConnectionFactoryType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>User</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Password</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClientId</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Transactional</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MinPoolSize</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jms-destinationType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JmsDestinationType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DestinationName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>mail-sessionType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MailSessionType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>StoreProtocol</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>StoreProtocolClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>TransportProtocol</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>TransportProtocolClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Host</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>User</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Password</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>From</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>connection-factory-resourceType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ConnectionFactoryResourceType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MinPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>TransactionSupport</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>administered-objectType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>AdministeredObjectType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>descriptionType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>DescriptionType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdStringType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdStringType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jndi-nameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JndiNameType</bean-name>
+		<bean-name>FullyQualifiedClass</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
-		<dtd-name>propertyType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PropertyType</bean-name>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Value</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdIntegerType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdIntegerType</bean-name>
-		<wrapper-class>java.math.BigInteger</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>transaction-supportType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>TransactionSupportType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdBooleanType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdBooleanType</bean-name>
-		<wrapper-class>boolean</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jdbc-urlType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JdbcUrlType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>isolation-levelType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>IsolationLevelType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>display-nameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>DisplayNameType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>iconType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>IconType</bean-name>
-		<meta-property>
-			<bean-name>SmallIcon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LargeIcon</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>pathType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PathType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>java-identifierType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JavaIdentifierType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>injection-targetType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>InjectionTargetType</bean-name>
-		<meta-property>
-			<bean-name>InjectionTargetClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTargetName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-typeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationTypeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-usageType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationUsageType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-linkType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationLinkType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>res-authType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResAuthType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>res-sharing-scopeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResSharingScopeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>service-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ServiceRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceInterface</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>WsdlFile</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>JaxrpcMappingFile</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceQname</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortComponentRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Handler</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>HandlerChains</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdAnyURIType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdAnyURIType</bean-name>
-		<wrapper-class>java.net.URI</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdQNameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdQNameType</bean-name>
-		<wrapper-class>javax.xml.namespace.QName</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>port-component-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PortComponentRefType</bean-name>
-		<meta-property>
-			<bean-name>ServiceEndpointInterface</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnableMtom</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MtomThreshold</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Addressing</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>RespectBinding</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortComponentLink</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>handlerType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HandlerType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>HandlerName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>HandlerClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InitParam</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>SoapHeader</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>SoapRole</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>handler-chainsType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HandlerChainsType</bean-name>
-		<meta-property>
-			<bean-name>HandlerChain</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>handler-chainType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HandlerChainType</bean-name>
-		<meta-property>
-			<bean-name>ServiceNamePattern</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortNamePattern</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ProtocolBindings</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Handler</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>qname-pattern</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>QnamePattern</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>protocol-bindingListType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ProtocolBindingListType</bean-name>
-		<wrapper-class>String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>param-valueType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ParamValueType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ParamName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ParamValue</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>true-falseType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>TrueFalseType</bean-name>
-		<wrapper-class>boolean</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdNonNegativeIntegerType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdNonNegativeIntegerType</bean-name>
-		<wrapper-class>java.math.BigInteger</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>addressingType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>AddressingType</bean-name>
-		<meta-property>
-			<bean-name>Enabled</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Required</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Responses</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>respect-bindingType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>RespectBindingType</bean-name>
-		<meta-property>
-			<bean-name>Enabled</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>addressing-responsesType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>AddressingResponsesType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-ref-nameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbRefNameType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-ref-typeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbRefTypeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>homeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HomeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>remoteType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>RemoteType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-linkType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbLinkType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>env-entry-type-valuesType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EnvEntryTypeValuesType</bean-name>
+            <dtd-name>message-destinationType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>MessageDestination</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.MessageDestination, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "MessageDestinationName"; }
+            </user-code>
+	</meta-element>
+        <meta-element>
+            <dtd-name>string</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>String</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>xsdStringType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>XsdStringType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>descriptionType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>DescriptionType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>display-nameType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>DisplayNameType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>iconType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>Icon</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.Icon
+            </implements>
+        </meta-element>
+        <meta-element>
+            <dtd-name>pathType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>PathType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>java-identifierType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>JavaIdentifierType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>jndi-nameType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>JndiNameType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>injection-targetType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>InjectionTarget</bean-name>
+            <implements>org.netbeans.modules.j2ee.dd.api.common.InjectionTarget</implements>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+        </meta-element>
+	<meta-element>
+		<dtd-name>persistence-context-typeType</dtd-name>
+		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+		<bean-name>PersistenceContextTypeType</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
+        <meta-element>
+            <dtd-name>message-destination-typeType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>MessageDestinationTypeType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>message-destination-usageType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>MessageDestinationUsageType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>message-destination-linkType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>MessageDestinationLinkType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>res-authType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ResAuthType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>res-sharing-scopeType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ResSharingScopeType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>service-refType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRef</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.ServiceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "ServiceRefName"; }
+            </user-code>
+        </meta-element>
+        <meta-element>
+            <dtd-name>xsdAnyURIType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>XsdAnyURIType</bean-name>
+            <wrapper-class>java.net.URI</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>xsdQNameType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>XsdQNameType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>port-component-refType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>PortComponentRef</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.PortComponentRef
+            </implements>
+        </meta-element>
+        <meta-element>
+            <dtd-name>service-ref_handlerType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRefHandler</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "HandlerName"; }
+            </user-code>
+        </meta-element>
+        <meta-element> 
+               <dtd-name>service-ref_handler-chainsType</dtd-name> 
+               <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+               <bean-name>ServiceRefHandlerChains</bean-name> 
+               <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements> 
+        </meta-element> 
+        <meta-element>
+            <dtd-name>service-ref_handler-chainType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRefHandlerChainType</bean-name>
+            <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements> 
+        </meta-element>
+        <meta-element>
+            <dtd-name>service-ref_qname-pattern</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRefQnamePattern</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>service-ref_protocol-bindingListType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRefProtocolBindingListType</bean-name>
+            <wrapper-class>String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>param-valueType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+                <bean-name>InitParam</bean-name>
+                <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+                <implements> 
+                    org.netbeans.modules.j2ee.dd.api.common.InitParam, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+                </implements>
+                <user-code>
+                    public String getKeyProperty() { return "ParamName"; }
+                </user-code>
+        </meta-element>
+        <meta-element>
+            <dtd-name>true-falseType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>TrueFalseType</bean-name>
+            <wrapper-class>boolean</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>ejb-ref-nameType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>EjbRefNameType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>ejb-ref-typeType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>EjbRefTypeType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>homeType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>HomeType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>remoteType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>RemoteType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>ejb-linkType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>EjbLinkType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+        <meta-element>
+            <dtd-name>env-entry-type-valuesType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>EnvEntryTypeValuesType</bean-name>
+            <wrapper-class>java.lang.String</wrapper-class>
+        </meta-element>
+
+<!-- changes added for EE6: -->
+
+        <meta-element>
+            <dtd-name>handlerType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRefHandler</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+            <implements>
+                org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "HandlerName"; }
+            </user-code>
+        </meta-element>
+        <meta-element>
+               <dtd-name>handler-chainsType</dtd-name>
+               <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+               <bean-name>ServiceRefHandlerChains</bean-name>
+               <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements>
+        </meta-element>
+        <meta-element>
+            <dtd-name>handler-chainType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>ServiceRefHandlerChainType</bean-name>
+            <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements>
+        </meta-element>
+        <meta-element>
+            <dtd-name>dewey-versionType</dtd-name>
+            <namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
+            <bean-name>version</bean-name>
+            <wrapper-class>java.math.BigDecimal</wrapper-class>
+        </meta-element>
 </metaDD>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_8.mdd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_8.mdd
index 00ef938..0db2269 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_8.mdd
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_8.mdd
@@ -1,1002 +1,135 @@
 <?xml version='1.0' encoding='UTF-8' ?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 2013, 2016 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+
+Contributor(s):
+-->
 <metaDD>
 	<meta-element>
 		<dtd-name>application</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
 		<bean-name>Application</bean-name>
-		<meta-property>
-			<bean-name>ApplicationName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InitializeInOrder</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Module</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>SecurityRole</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LibraryDirectory</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntry</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbLocalRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceEnvRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceContextRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestination</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DataSource</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>JmsConnectionFactory</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>JmsDestination</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MailSession</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ConnectionFactory</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>AdministeredObject</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>string</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>String</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>generic-booleanType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>GenericBooleanType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
+		<implements>org.netbeans.modules.j2ee.dd.api.application.Application</implements>
+                <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+                <user-code>
+                    public org.xml.sax.SAXParseException getError() {
+                        return null;
+                    }
+                    public int getStatus() {
+                        return STATE_VALID;
+                    }
+                    public void setVersion(java.math.BigDecimal value) {
+                            setAttributeValue(VERSION, value.toString());
+                    }
+                    public java.math.BigDecimal getVersion() {
+                            return new java.math.BigDecimal(getAttributeValue(VERSION));
+                    }
+               </user-code>
 	</meta-element>
 	<meta-element>
 		<dtd-name>moduleType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ModuleType</bean-name>
-		<meta-property>
-			<bean-name>Connector</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Ejb</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Java</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Web</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>AltDd</bean-name>
-		</meta-property>
+		<bean-name>Module</bean-name>
+		<implements>org.netbeans.modules.j2ee.dd.api.application.Module</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
 	</meta-element>
 	<meta-element>
 		<dtd-name>security-roleType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>SecurityRoleType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>RoleName</bean-name>
-		</meta-property>
+		<bean-name>SecurityRole</bean-name>
+		<implements>org.netbeans.modules.j2ee.dd.api.common.SecurityRole</implements>
+		<extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
 	</meta-element>
 	<meta-element>
 		<dtd-name>pathType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PathType</bean-name>
+		<bean-name>Path</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
-		<dtd-name>env-entryType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EnvEntryType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntryName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntryType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnvEntryValue</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Home</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Remote</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbLink</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-local-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbLocalRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LocalHome</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Local</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EjbLink</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>resource-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResourceRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResAuth</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResSharingScope</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>resource-env-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResourceEnvRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceEnvRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceEnvRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationUsage</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationLink</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>persistence-context-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PersistenceContextRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceContextRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceContextType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceContextSynchronization</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceProperty</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>persistence-unit-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PersistenceUnitRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PersistenceUnitName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destinationType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MessageDestinationName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>data-sourceType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>DataSourceType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServerName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortNumber</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DatabaseName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Url</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>User</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Password</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LoginTimeout</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Transactional</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>IsolationLevel</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InitialPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MinPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxIdleTime</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxStatements</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jms-connection-factoryType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JmsConnectionFactoryType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>User</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Password</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClientId</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Transactional</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MinPoolSize</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jms-destinationType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JmsDestinationType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DestinationName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>mail-sessionType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MailSessionType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>StoreProtocol</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>StoreProtocolClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>TransportProtocol</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>TransportProtocolClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Host</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>User</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Password</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>From</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>connection-factory-resourceType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ConnectionFactoryResourceType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MaxPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MinPoolSize</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>TransactionSupport</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>administered-objectType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>AdministeredObjectType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InterfaceName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ClassName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ResourceAdapter</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Property2</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
 		<dtd-name>descriptionType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>DescriptionType</bean-name>
+		<bean-name>Description</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
 		<dtd-name>xsdStringType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdStringType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jndi-nameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JndiNameType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>fully-qualified-classType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>FullyQualifiedClassType</bean-name>
+		<bean-name>XsdString</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
-		<dtd-name>propertyType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PropertyType</bean-name>
-		<meta-property>
-			<bean-name>Name</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Value</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdIntegerType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdIntegerType</bean-name>
-		<wrapper-class>java.math.BigInteger</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>transaction-supportType</dtd-name>
+		<dtd-name>role-nameType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>TransactionSupportType</bean-name>
+		<bean-name>RoleName</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
-		<dtd-name>xsdBooleanType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdBooleanType</bean-name>
-		<wrapper-class>boolean</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>jdbc-urlType</dtd-name>
+		<dtd-name>webType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JdbcUrlType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
+		<bean-name>Web</bean-name>
+		<implements>org.netbeans.modules.j2ee.dd.api.application.Web</implements>
+                <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+                <user-code>
+                    public String getWebUriId() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                        throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(org.netbeans.modules.j2ee.dd.api.application.Application.VERSION_1_4);
+                    }
+                    public void setWebUriId(String value) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                        throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(org.netbeans.modules.j2ee.dd.api.application.Application.VERSION_1_4);
+                    }
+                </user-code>
 	</meta-element>
 	<meta-element>
-		<dtd-name>isolation-levelType</dtd-name>
+		<dtd-name>string</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>IsolationLevelType</bean-name>
+		<bean-name>String</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
 		<dtd-name>display-nameType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>DisplayNameType</bean-name>
+		<bean-name>DisplayName</bean-name>
 		<wrapper-class>java.lang.String</wrapper-class>
 	</meta-element>
 	<meta-element>
 		<dtd-name>iconType</dtd-name>
 		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>IconType</bean-name>
-		<meta-property>
-			<bean-name>SmallIcon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LargeIcon</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>injection-targetType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>InjectionTargetType</bean-name>
-		<meta-property>
-			<bean-name>InjectionTargetClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTargetName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>java-identifierType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>JavaIdentifierType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>persistence-context-typeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PersistenceContextTypeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>persistence-context-synchronizationType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PersistenceContextSynchronizationType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-typeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationTypeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-usageType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationUsageType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>message-destination-linkType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>MessageDestinationLinkType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>res-authType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResAuthType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>res-sharing-scopeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ResSharingScopeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>service-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ServiceRefType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceRefName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceInterface</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceRefType</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>WsdlFile</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>JaxrpcMappingFile</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ServiceQname</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortComponentRef</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Handler</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>HandlerChains</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MappedName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InjectionTarget</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>LookupName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdAnyURIType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdAnyURIType</bean-name>
-		<wrapper-class>java.net.URI</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdQNameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdQNameType</bean-name>
-		<wrapper-class>javax.xml.namespace.QName</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>port-component-refType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>PortComponentRefType</bean-name>
-		<meta-property>
-			<bean-name>ServiceEndpointInterface</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>EnableMtom</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>MtomThreshold</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Addressing</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>RespectBinding</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortComponentLink</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>handlerType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HandlerType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>DisplayName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Icon</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>HandlerName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>HandlerClass</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>InitParam</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>SoapHeader</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>SoapRole</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortName</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>handler-chainsType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HandlerChainsType</bean-name>
-		<meta-property>
-			<bean-name>HandlerChain</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>handler-chainType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HandlerChainType</bean-name>
-		<meta-property>
-			<bean-name>ServiceNamePattern</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>PortNamePattern</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ProtocolBindings</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Handler</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>qname-pattern</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>QnamePattern</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>protocol-bindingListType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ProtocolBindingListType</bean-name>
-		<wrapper-class>String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>param-valueType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>ParamValueType</bean-name>
-		<meta-property>
-			<bean-name>Description</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ParamName</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ParamValue</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>true-falseType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>TrueFalseType</bean-name>
-		<wrapper-class>boolean</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>xsdNonNegativeIntegerType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>XsdNonNegativeIntegerType</bean-name>
-		<wrapper-class>java.math.BigInteger</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>addressingType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>AddressingType</bean-name>
-		<meta-property>
-			<bean-name>Enabled</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Required</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>Responses</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>respect-bindingType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>RespectBindingType</bean-name>
-		<meta-property>
-			<bean-name>Enabled</bean-name>
-		</meta-property>
-	</meta-element>
-	<meta-element>
-		<dtd-name>addressing-responsesType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>AddressingResponsesType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-ref-nameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbRefNameType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-ref-typeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbRefTypeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>local-homeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>LocalHomeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>localType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>LocalType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>ejb-linkType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EjbLinkType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>homeType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>HomeType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>remoteType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>RemoteType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>env-entry-type-valuesType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>EnvEntryTypeValuesType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>role-nameType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>RoleNameType</bean-name>
-		<wrapper-class>java.lang.String</wrapper-class>
-	</meta-element>
-	<meta-element>
-		<dtd-name>webType</dtd-name>
-		<namespace>http://xmlns.jcp.org/xml/ns/javaee</namespace>
-		<bean-name>WebType</bean-name>
-		<meta-property>
-			<bean-name>WebUri</bean-name>
-		</meta-property>
-		<meta-property>
-			<bean-name>ContextRoot</bean-name>
-		</meta-property>
+		<bean-name>Icon</bean-name>
+		<implements>org.netbeans.modules.j2ee.dd.api.common.Icon</implements>
+                <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
 	</meta-element>
 </metaDD>
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/app/EarDataLoader.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/app/EarDataLoader.java
index 2274a50..df358ac 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/app/EarDataLoader.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/app/EarDataLoader.java
@@ -43,28 +43,35 @@ public class EarDataLoader extends UniFileLoader {
     private static final String REQUIRED_MIME_PREFIX_3 = "text/x-dd-application6.0"; // NOI18N
 
     private static final String REQUIRED_MIME_PREFIX_4 = "text/x-dd-application7.0"; // NOI18N
+    
+    private static final String REQUIRED_MIME_PREFIX_5 = "text/x-dd-application8.0"; // NOI18N
 
     public EarDataLoader () {
         super ("org.netbeans.modules.j2ee.ddloaders.app.EarDataObject");  // NOI18N
     }
 
 
+    @Override
     protected String defaultDisplayName () {
         return NbBundle.getMessage (EarDataLoader.class, "LBL_loaderName");
     }
     
+    @Override
     protected String actionsContext() {
         return "Loaders/text/x-dd/Actions/"; // NOI18N
     }
 
+    @Override
     protected void initialize () {
          super.initialize ();
          getExtensions().addMimeType(REQUIRED_MIME_PREFIX_1);
          getExtensions().addMimeType(REQUIRED_MIME_PREFIX_2);
          getExtensions().addMimeType(REQUIRED_MIME_PREFIX_3);
          getExtensions().addMimeType(REQUIRED_MIME_PREFIX_4);
+         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_5);
      }
 
+    @Override
     protected MultiDataObject createMultiObject (FileObject primaryFile)
             throws DataObjectExistsException, IOException {
         return new EarDataObject (primaryFile, this);
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/catalog/EnterpriseCatalog.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/catalog/EnterpriseCatalog.java
index 28083bf..f7dae87 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/catalog/EnterpriseCatalog.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/catalog/EnterpriseCatalog.java
@@ -29,7 +29,6 @@ import java.util.logging.Logger;
 import org.netbeans.modules.xml.catalog.spi.CatalogDescriptor2;
 import org.netbeans.modules.xml.catalog.spi.CatalogListener;
 import org.netbeans.modules.xml.catalog.spi.CatalogReader;
-import org.openide.util.ImageUtilities;
 import org.openide.util.NbBundle;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
@@ -132,28 +131,34 @@ public final class EnterpriseCatalog implements CatalogReader, CatalogDescriptor
 
     }
 
+    @Override
     public String getIconResource(int type) {
         return "org/netbeans/modules/j2ee/ddloaders/catalog/resources/DDCatalog.gif"; // NOI18N
     }
 
+    @Override
     public String getDisplayName() {
         return NbBundle.getMessage (EnterpriseCatalog.class, "LBL_EnterpriseCatalog");
     }
 
+    @Override
     public String getShortDescription() {
         return NbBundle.getMessage (EnterpriseCatalog.class, "DESC_EnterpriseCatalog");
     }
 
+    @Override
     public void addPropertyChangeListener(PropertyChangeListener l) {
     }
 
+    @Override
     public void removePropertyChangeListener(PropertyChangeListener l) {
     }
 
+    @Override
     public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
         // additional logging for #127276
         if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, "Resolving entity [publicId: '" + publicId + "', systemId: '" + systemId + "']");
+            LOGGER.log(Level.FINE, "Resolving entity [publicId: ''{0}'', systemId: ''{1}'']", new Object[]{publicId, systemId});
         }
         if (systemId == null){
             return null;
@@ -162,18 +167,19 @@ public final class EnterpriseCatalog implements CatalogReader, CatalogDescriptor
             if (systemId.endsWith(each.getSchemaName())){
                 // additional logging for #127276
                 if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.log(Level.FINE, "Got resource: " + each.getResourcePath());
+                    LOGGER.log(Level.FINE, "Got resource: {0}", each.getResourcePath());
                 }
                 return new InputSource(each.getResourcePath());
             }
         }
         // additional logging for #127276
         if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, "No resource found for publicId: " + publicId);
+            LOGGER.log(Level.FINE, "No resource found for publicId: {0}", publicId);
         }
         return null;
     }
 
+    @Override
     public Iterator getPublicIDs() {
         List<String> result = new ArrayList<String>();
         for (SchemaInfo each : schemas){
@@ -182,9 +188,11 @@ public final class EnterpriseCatalog implements CatalogReader, CatalogDescriptor
         return result.iterator();
     }
 
+    @Override
     public void refresh() {
     }
 
+    @Override
     public String getSystemID(String publicId) {
         if (publicId == null){
             return null;
@@ -197,17 +205,21 @@ public final class EnterpriseCatalog implements CatalogReader, CatalogDescriptor
         return null;
     }
 
+    @Override
     public String resolveURI(String name) {
         return null;
     }
 
+    @Override
     public String resolvePublic(String publicId) {
         return null;
     }
 
+    @Override
     public void addCatalogListener(CatalogListener l) {
     }
 
+    @Override
     public void removeCatalogListener(CatalogListener l) {
     }
 
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java
index 0a137b4..4fe466f 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java
@@ -39,19 +39,23 @@ public class ClientDataLoader extends UniFileLoader {
     private static final String REQUIRED_MIME_PREFIX_3 = "text/x-dd-client5.0"; // NOI18N
     private static final String REQUIRED_MIME_PREFIX_4 = "text/x-dd-client6.0"; // NOI18N
     private static final String REQUIRED_MIME_PREFIX_5 = "text/x-dd-client7.0"; // NOI18N
+    private static final String REQUIRED_MIME_PREFIX_6 = "text/x-dd-client8.0"; // NOI18N
     
     public ClientDataLoader() {
         super("org.netbeans.modules.j2ee.ddloaders.client.ClientDataObject");  // NOI18N
     }
     
+    @Override
     protected String defaultDisplayName() {
         return NbBundle.getMessage(ClientDataLoader.class, "LBL_loaderName");
     }
     
+    @Override
     protected String actionsContext() {
         return "Loaders/text/x-dd/Actions/"; // NOI18N
     }
     
+    @Override
     protected void initialize() {
         super.initialize();
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_1);
@@ -59,8 +63,10 @@ public class ClientDataLoader extends UniFileLoader {
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_3);
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_4);
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_5);
+        getExtensions().addMimeType(REQUIRED_MIME_PREFIX_6);
     }
     
+    @Override
     protected MultiDataObject createMultiObject(FileObject primaryFile)
     throws DataObjectExistsException, IOException {
         return new ClientDataObject(primaryFile, this);
diff --git a/enterprise/j2ee.earproject/nbproject/project.properties b/enterprise/j2ee.earproject/nbproject/project.properties
index ef38ff5..41dbe01 100644
--- a/enterprise/j2ee.earproject/nbproject/project.properties
+++ b/enterprise/j2ee.earproject/nbproject/project.properties
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-javac.compilerargs=-Xlint:unchecked
-javac.source=1.6
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 javadoc.arch=${basedir}/arch.xml
 
 # need masterfs to support FileUtil.fromFile...
diff --git a/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectGenerator.java b/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectGenerator.java
index e05d7ce..95fbe05 100644
--- a/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectGenerator.java
+++ b/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectGenerator.java
@@ -87,8 +87,6 @@ import org.w3c.dom.Element;
  */
 public final class EarProjectGenerator {
 
-    private static final Logger LOGGER = Logger.getLogger(EarProjectGenerator.class.getName());
-
     private static final String DEFAULT_DOC_BASE_FOLDER = "src/conf"; //NOI18N
     private static final String DEFAULT_BUILD_DIR = "build"; //NOI18N
     private static final String DEFAULT_RESOURCE_FOLDER = "setup"; //NOI18N
@@ -111,8 +109,7 @@ public final class EarProjectGenerator {
         this.j2eeProfile = j2eeProfile;
         this.serverInstanceID = serverInstanceID;
         // #181215: JDK 6 should be the default source/binary format for Java EE 6 projects
-        if (sourceLevel != null && (sourceLevel.equals("1.7")))
-            sourceLevel = "1.6";
+        // #181215: Not neccessary anymore because NetBeans should run on minimum JDK 8
         this.sourceLevel = sourceLevel;
         this.librariesDefinition = librariesDefinition;
     }
@@ -135,6 +132,7 @@ public final class EarProjectGenerator {
         // create project in one FS atomic action:
         FileSystem fs = projectDir.getFileSystem();
         fs.runAtomicAction(new FileSystem.AtomicAction() {
+            @Override
             public void run() throws IOException {
                 AntProjectHelper helper = earGen.doCreateProject();
                 h[0] = helper;
@@ -155,6 +153,7 @@ public final class EarProjectGenerator {
         // create project in one FS atomic action:
         FileSystem fs = projectDir.getFileSystem();
         fs.runAtomicAction(new FileSystem.AtomicAction() {
+            @Override
             public void run() throws IOException {
                 AntProjectHelper helper = earGen.doImportProject(sDir, userModules, platformName);
                 h[0] = helper;
@@ -174,6 +173,7 @@ public final class EarProjectGenerator {
         final ReferenceHelper refHelper = p.getReferenceHelper();
         try {
             ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction<Void>() {
+                @Override
                 public Void run() throws Exception {
                     EditableProperties ep = h.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                     ep.put(EarProjectProperties.SOURCE_ROOT, "."); //NOI18N
@@ -280,7 +280,7 @@ public final class EarProjectGenerator {
                     }
                 }
             } catch (IOException ioe) {
-                Logger.getLogger("global").log(Level.INFO, ioe.getLocalizedMessage());
+                Logger.getLogger(EarProjectGenerator.class.getName()).log(Level.INFO, ioe.getLocalizedMessage());
             }
         
             setupDD(j2eeProfile, docBase, earProject);
@@ -497,7 +497,7 @@ public final class EarProjectGenerator {
     private AntProjectHelper setupProject() throws IOException {
 
         EarProjectUtil.logUI(NbBundle.getBundle(EarProjectGenerator.class), "UI_EAR_PROJECT_CREATE_SHARABILITY", // NOI18N
-                new Object[]{Boolean.valueOf(librariesDefinition != null), Boolean.FALSE});
+                new Object[]{(librariesDefinition != null), Boolean.FALSE});
 
         AntProjectHelper h = ProjectGenerator.createProject(prjDirFO, EarProjectType.TYPE, librariesDefinition);
         EarProject p = (EarProject)ProjectManager.getDefault().findProject(prjDirFO);
@@ -543,8 +543,7 @@ public final class EarProjectGenerator {
             srcLevel = v.toString();
             // #89131: these levels are not actually distinct from 1.5.
             // #181215: JDK 6 should be the default source/binary format for Java EE 6 projects
-            if (srcLevel.equals("1.7"))
-                srcLevel = "1.6";
+            // #181215: Not neccessary anymore because NetBeans should run on minimum JDK 8
         }
         ep.setProperty(EarProjectProperties.JAVAC_SOURCE, srcLevel); //NOI18N
         ep.setProperty(EarProjectProperties.JAVAC_DEBUG, "true"); // NOI18N
@@ -600,16 +599,17 @@ public final class EarProjectGenerator {
         }
         try {
             projectDir.getFileSystem().runAtomicAction(new AtomicAction() {
+                @Override
                 public void run() throws IOException {
                     ProjectManager.mutex().writeAccess(new Runnable() {
+                        @Override
                         public void run() {
                             try {
                                 EditableProperties ep = helper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                                 // #89131: these levels are not actually distinct from 1.5.
                                 String srcLevel = sourceLevel;
                                 // #181215: JDK 6 should be the default source/binary format for Java EE 6 projects
-                                if (sourceLevel.equals("1.7"))
-                                    srcLevel = "1.6";
+                                // #181215: Not neccessary anymore because NetBeans should run on minimum JDK 8
                                 ep.setProperty(EarProjectProperties.JAVAC_SOURCE, srcLevel);
                                 ep.setProperty(EarProjectProperties.JAVAC_TARGET, srcLevel);
                                 helper.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
diff --git a/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java b/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java
index 435d2d8..12b2d37 100644
--- a/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java
+++ b/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java
@@ -147,10 +147,12 @@ public final class ProjectEar extends J2eeApplicationProvider
         return project.getLookup().lookup(ClassPathProvider.class);
     }
     
+    @Override
     public FileObject getArchive () {
         return project.getFileObject (EarProjectProperties.DIST_JAR); //NOI18N
     }
     
+    @Override
     public synchronized J2eeModule getJ2eeModule () {
         if (j2eeApplication == null) {
             j2eeApplication = J2eeModuleFactory.createJ2eeApplication(this);
@@ -158,6 +160,7 @@ public final class ProjectEar extends J2eeApplicationProvider
         return j2eeApplication;
     }
     
+    @Override
     public ModuleChangeReporter getModuleChangeReporter () {
         return this;
     }
@@ -172,6 +175,7 @@ public final class ProjectEar extends J2eeApplicationProvider
         return project.getServerID(); //helper.getStandardPropertyEvaluator ().getProperty (EarProjectProperties.J2EE_SERVER_TYPE);
     }
     
+    @Override
     public void setServerInstanceID(String severInstanceID) {
         // TODO: implement when needed
     }
@@ -186,12 +190,14 @@ public final class ProjectEar extends J2eeApplicationProvider
      * If the J2eeModule instance describes a j2ee application, the result should not 
      * contain module archives.
      */
+    @Override
     public Iterator getArchiveContents () throws IOException {
         FileObject content = getContentDirectory();
         content.refresh();
         return new IT(this, content);
     }
 
+    @Override
     public FileObject getContentDirectory() {
         return project.getFileObject (EarProjectProperties.BUILD_DIR); //NOI18N
     }
@@ -210,6 +216,7 @@ public final class ProjectEar extends J2eeApplicationProvider
         return metadataModel;
     }
 
+    @Override
     public <T> MetadataModel<T> getMetadataModel(Class<T> type) {
         if (type == ApplicationMetadata.class) {
             @SuppressWarnings("unchecked") // NOI18N
@@ -279,38 +286,48 @@ public final class ProjectEar extends J2eeApplicationProvider
             p = Profile.JAVA_EE_7_FULL;
         }
         FileObject dd = DDHelper.createApplicationXml(p, root, true);
-
         application = DDProvider.getDefault().getDDRoot(dd);
         application.setDisplayName(ProjectUtils.getInformation(project).getDisplayName());
         for (ClassPathSupport.Item item : EarProjectProperties.getJarContentAdditional(project)) {
             EarProjectProperties.addItemToAppDD(project, application, item);
         }
-
         return application;
     }
 
+    @Override
     public EjbChangeDescriptor getEjbChanges (long timestamp) {
         return this;
     }
 
+    @Override
     public J2eeModule.Type getModuleType () {
         return J2eeModule.Type.EAR;
     }
 
+    @Override
     public String getModuleVersion () {
         Profile p = Profile.fromPropertiesString(project.evaluator().getProperty(EarProjectProperties.J2EE_PLATFORM));
         if (p == null) {
-            p = Profile.JAVA_EE_6_FULL;
+            p = Profile.JAVA_EE_7_FULL;
         }
-        if (Profile.JAVA_EE_5.equals(p)) {
+        if (Profile.JAKARTA_EE_8_FULL.equals(p)) {
+            return Application.VERSION_8;
+        } else if (Profile.JAVA_EE_8_FULL.equals(p)) {
+            return Application.VERSION_8;
+        } else if (Profile.JAVA_EE_7_FULL.equals(p)) {
+            return Application.VERSION_7;
+        } else if (Profile.JAVA_EE_6_FULL.equals(p)) {
+            return Application.VERSION_6;
+        } else if (Profile.JAVA_EE_5.equals(p)) {
             return Application.VERSION_5;
         } else if (Profile.J2EE_14.equals(p)) {
             return Application.VERSION_1_4;
         } else {
-            return Application.VERSION_6;
+            return Application.VERSION_7;
         }
     }
     
+    @Override
     public void propertyChange(PropertyChangeEvent evt) {
         if (evt.getPropertyName().equals(Application.PROPERTY_VERSION)) {
             String oldVersion = (String) evt.getOldValue();
@@ -331,10 +348,12 @@ public final class ProjectEar extends J2eeApplicationProvider
         }
     }
         
+    @Override
     public String getUrl () {
         return "";
     }
 
+    @Override
     public boolean isManifestChanged (long timestamp) {
         return false;
     }
@@ -343,10 +362,12 @@ public final class ProjectEar extends J2eeApplicationProvider
         throw new UnsupportedOperationException ("Cannot customize URL of web module"); // NOI18N
     }
 
+    @Override
     public boolean ejbsChanged () {
         return false;
     }
 
+    @Override
     public String[] getChangedEjbs () {
         return new String[] {};
     }
@@ -381,8 +402,7 @@ public final class ProjectEar extends J2eeApplicationProvider
                 try {
                     modArchive = mods[i].getArchive();
                 } catch (java.io.IOException ioe) {
-                    Logger.getLogger(ProjectEar.class.getName()).log(Level.FINER,
-                            null,ioe);
+                    LOGGER.log(Level.FINER, null, ioe);
                     continue;
                 }
                 if (modArchive != null) {
@@ -407,14 +427,17 @@ public final class ProjectEar extends J2eeApplicationProvider
             it = filteredContent.iterator();
         }
         
+        @Override
         public boolean hasNext() {
             return it.hasNext();
         }
         
+        @Override
         public Object next() {
             return new FSRootRE(root, it.next());
         }
         
+        @Override
         public void remove () {
             throw new UnsupportedOperationException ();
         }
@@ -430,10 +453,12 @@ public final class ProjectEar extends J2eeApplicationProvider
             this.root = root;
         }
         
+        @Override
         public FileObject getFileObject () {
             return f;
         }
         
+        @Override
         public String getRelativePath () {
             return FileUtil.getRelativePath (root, f);
         }
@@ -448,6 +473,7 @@ public final class ProjectEar extends J2eeApplicationProvider
         this.mods = mods;
     }
     
+    @Override
     public J2eeModule[] getModules() {
         J2eeModule[] retVal = new J2eeModule[mods.size()];
         int i = 0;
@@ -481,7 +507,7 @@ public final class ProjectEar extends J2eeApplicationProvider
             try {
                 ml.addModule(jm);
             } catch (RuntimeException rex) {
-                Logger.getLogger("global").log(Level.INFO, rex.getLocalizedMessage());
+                LOGGER.log(Level.INFO, rex.getLocalizedMessage());
             }
         }
     }
@@ -491,15 +517,17 @@ public final class ProjectEar extends J2eeApplicationProvider
             try {
                 ml.removeModule(jm);
             } catch (RuntimeException rex) {
-                Logger.getLogger("global").log(Level.FINE, rex.getLocalizedMessage());
+                LOGGER.log(Level.FINE, rex.getLocalizedMessage());
             }
         }
     }
     
+    @Override
     public void addModuleListener(ModuleListener ml) {
         modListeners.add(ml);
     }
     
+    @Override
     public void removeModuleListener(ModuleListener ml){
         modListeners.remove(ml);
     }
@@ -509,6 +537,7 @@ public final class ProjectEar extends J2eeApplicationProvider
      * @param uri the child module URI within the J2EE application.
      * @return J2eeModuleProvider object
      */
+    @Override
     public J2eeModuleProvider getChildModuleProvider(String uri) {
         return mods.get(uri);
     }
@@ -517,6 +546,7 @@ public final class ProjectEar extends J2eeApplicationProvider
      * Returns list of providers of every child J2EE module of this J2EE app.
      * @return array of J2eeModuleProvider objects.
      */
+    @Override
     public  J2eeModuleProvider[] getChildModuleProviders() {
         return mods.values().toArray(new J2eeModuleProvider[mods.size()]);
     }
@@ -532,6 +562,7 @@ public final class ProjectEar extends J2eeApplicationProvider
             !Boolean.parseBoolean(project.evaluator().getProperty(EarProjectProperties.J2EE_DEPLOY_ON_SAVE));
     }
     
+    @Override
     public File getDeploymentConfigurationFile(String name) {
         String path = getConfigSupport().getContentRelativePath(name);
         if (path == null) {
@@ -584,10 +615,12 @@ public final class ProjectEar extends J2eeApplicationProvider
         }
     }
 
+    @Override
     public void addPropertyChangeListener(PropertyChangeListener listener) {
         getPropertyChangeSupport().addPropertyChangeListener(listener);
     }
 
+    @Override
     public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
         if (propertyChangeSupport == null) {
             return;
@@ -681,6 +714,7 @@ public final class ProjectEar extends J2eeApplicationProvider
             ProjectEar.this.getConfigSupport().removeDeployOnSaveListener(this);
         }
 
+        @Override
         public void propertyChange(PropertyChangeEvent evt) {
             if (EarProjectProperties.RESOURCE_DIR.equals(evt.getPropertyName()) ||
                     EarProjectProperties.J2EE_COMPILE_ON_SAVE.equals(evt.getPropertyName())) {
@@ -814,6 +848,7 @@ public final class ProjectEar extends J2eeApplicationProvider
             super();
         }
 
+        @Override
         public synchronized void addArtifactListener(ArtifactListener listener) {
             copyOnSaveSupport.addArtifactListener(listener);
 
@@ -832,6 +867,7 @@ public final class ProjectEar extends J2eeApplicationProvider
             }
         }
 
+        @Override
         public synchronized void removeArtifactListener(ArtifactListener listener) {
             copyOnSaveSupport.removeArtifactListener(listener);
 
@@ -849,6 +885,7 @@ public final class ProjectEar extends J2eeApplicationProvider
             }
         }
 
+        @Override
         public boolean containsIdeArtifacts() {
             for (J2eeModuleProvider provider : getChildModuleProviders()) {
                 DeployOnSaveSupport support = provider.getDeployOnSaveSupport();
@@ -862,6 +899,7 @@ public final class ProjectEar extends J2eeApplicationProvider
         }
 
         
+        @Override
         public void artifactsUpdated(Iterable<Artifact> artifacts) {
             List<Artifact> recomputed = new ArrayList<Artifact>();
             String buildDirName = project.evaluator().getProperty(EarProjectProperties.BUILD_DIR);
@@ -905,6 +943,7 @@ public final class ProjectEar extends J2eeApplicationProvider
 
     private class EarResourceChangeReporter implements ResourceChangeReporterImplementation {
 
+        @Override
         public boolean isServerResourceChanged(long lastDeploy) {
             File resDir = getResourceDirectory();
             if (resDir != null && resDir.exists() && resDir.isDirectory()) {
diff --git a/enterprise/j2ee.ejbcore/nbproject/project.properties b/enterprise/j2ee.ejbcore/nbproject/project.properties
index a0c1559..68123cd 100644
--- a/enterprise/j2ee.ejbcore/nbproject/project.properties
+++ b/enterprise/j2ee.ejbcore/nbproject/project.properties
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-javac.compilerargs=-Xlint:unchecked
-javac.source=1.7
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 
 test.unit.cp.extra=\
     ${nb_all}/enterprise/j2ee.dd/external/javaee-api-5.jar
diff --git a/enterprise/j2ee.ejbjarproject/nbproject/project.properties b/enterprise/j2ee.ejbjarproject/nbproject/project.properties
index 707c994..3a82ec2 100644
--- a/enterprise/j2ee.ejbjarproject/nbproject/project.properties
+++ b/enterprise/j2ee.ejbjarproject/nbproject/project.properties
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-javac.source=1.6
-javac.compilerargs=-Xlint:unchecked
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 javadoc.arch=${basedir}/arch.xml
 javadoc.apichanges=${basedir}/apichanges.xml
 
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java
index 49010bc..33ccbd1 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java
@@ -107,7 +107,6 @@ import org.netbeans.api.project.ProjectUtils;
 import org.netbeans.api.project.ui.ProjectProblems;
 import org.netbeans.modules.javaee.project.api.PersistenceProviderSupplierImpl;
 import org.netbeans.modules.javaee.project.api.ant.AntProjectConstants;
-import org.netbeans.modules.j2ee.common.ProjectUtil;
 import org.netbeans.modules.j2ee.common.ServerUtil;
 import org.netbeans.modules.javaee.project.api.WhiteListUpdater;
 import org.netbeans.modules.javaee.project.spi.JavaEEProjectSettingsImplementation;
@@ -302,11 +301,12 @@ public class EjbJarProject implements Project, FileChangeListener {
         deployOnSaveSupport = new DeployOnSaveSupportProxy();
         ProjectManager.mutex().postWriteRequest(
              new Runnable () {
+                 @Override
                  public void run() {
                      try {
                          updateProjectXML ();
                      } catch (IOException ioe) {
-                         Logger.getLogger("global").log(Level.INFO, null, ioe);
+                         LOGGER.log(Level.INFO, null, ioe);
                      }
                  }
              }
@@ -321,6 +321,7 @@ public class EjbJarProject implements Project, FileChangeListener {
     
     private ClassPathModifier.Callback createClassPathModifierCallback() {
         return new ClassPathModifier.Callback() {
+            @Override
             public String getClassPathProperty(SourceGroup sg, String type) {
                 assert sg != null : "SourceGroup cannot be null";  //NOI18N
                 assert type != null : "Type cannot be null";  //NOI18N
@@ -331,6 +332,7 @@ public class EjbJarProject implements Project, FileChangeListener {
                 return classPathProperty[0];
             }
 
+            @Override
             public String getElementName(String classpathProperty) {
                 if (ProjectProperties.JAVAC_CLASSPATH.equals(classpathProperty)) {
                     return ClassPathSupportCallbackImpl.ELEMENT_INCLUDED_LIBRARIES;
@@ -343,6 +345,7 @@ public class EjbJarProject implements Project, FileChangeListener {
     public synchronized ClassPathUiSupport.Callback getClassPathUiSupportCallback() {
         if (classPathUiSupportCallback == null) {
             classPathUiSupportCallback = new ClassPathUiSupport.Callback() {
+                @Override
                 public void initItem(ClassPathSupport.Item item) {
                     if (item.getType() != ClassPathSupport.Item.TYPE_LIBRARY || !item.getLibrary().getType().equals(J2eePlatform.LIBRARY_TYPE)) {
                         item.setAdditionalProperty(ClassPathSupportCallbackImpl.INCLUDE_IN_DEPLOYMENT, "true");
@@ -358,6 +361,7 @@ public class EjbJarProject implements Project, FileChangeListener {
      * Returns the project directory
      * @return the directory the project is located in
      */
+    @Override
     public FileObject getProjectDirectory() {
         return helper.getProjectDirectory();
     }
@@ -383,6 +387,7 @@ public class EjbJarProject implements Project, FileChangeListener {
         return updateHelper;
     }
 
+    @Override
     public Lookup getLookup() {
         return lookup;
     }
@@ -496,9 +501,7 @@ public class EjbJarProject implements Project, FileChangeListener {
         }
         return this.testRoots;
     }
-
-    
-    
+        
     WebServicesSupport getAPIWebServicesSupport() {
         return apiWebServicesSupport;
     }
@@ -546,6 +549,7 @@ public class EjbJarProject implements Project, FileChangeListener {
         }
         brokenAlertShown = true;
         SwingUtilities.invokeLater(new Runnable() {
+            @Override
             public void run() {
                 try {
                     Object ok = NbBundle.getMessage(BrokenReferencesAlertPanel.class,"MSG_Broken_References_OK");
@@ -579,6 +583,7 @@ public class EjbJarProject implements Project, FileChangeListener {
     /** Store configured project name. */
     public void setName(final String name) {
         ProjectManager.mutex().writeAccess(new Runnable() {
+            @Override
             public void run() {
                 Element data = helper.getPrimaryConfigurationData(true);
                 // XXX replace by XMLUtil when that has findElement, findText, etc.
@@ -621,26 +626,32 @@ public class EjbJarProject implements Project, FileChangeListener {
         }
     }
 
+    @Override
     public void fileAttributeChanged (org.openide.filesystems.FileAttributeEvent fe) {
     }    
     
+    @Override
     public void fileChanged (org.openide.filesystems.FileEvent fe) {
     }
     
+    @Override
     public void fileDataCreated (org.openide.filesystems.FileEvent fe) {
         FileObject fo = fe.getFile ();
         checkLibraryFolder (fo);
     }
     
+    @Override
     public void fileDeleted (org.openide.filesystems.FileEvent fe) {
     }
     
     public void registerJ2eePlatformListener(final J2eePlatform platform) {
         // listen to classpath changes
         j2eePlatformListener = new PropertyChangeListener() {
+            @Override
             public void propertyChange(PropertyChangeEvent evt) {
                 if (evt.getPropertyName().equals(J2eePlatform.PROP_CLASSPATH)) {
                     ProjectManager.mutex().writeAccess(new Runnable() {
+                        @Override
                         public void run() {
                             EditableProperties ep = helper.getProperties(
                                     AntProjectHelper.PRIVATE_PROPERTIES_PATH);
@@ -670,9 +681,11 @@ public class EjbJarProject implements Project, FileChangeListener {
         }
     }
         
+    @Override
     public void fileFolderCreated (FileEvent fe) {
     }
     
+    @Override
     public void fileRenamed (FileRenameEvent fe) {
         FileObject fo = fe.getFile ();
         checkLibraryFolder (fo);
@@ -708,7 +721,7 @@ public class EjbJarProject implements Project, FileChangeListener {
                 GeneratedFilesHelper.BUILD_IMPL_XML_PATH,
                 EjbJarProject.class.getResource("resources/build-impl.xsl"));
             final Boolean projectPropertiesSave = EjbJarProject.this.projectPropertiesSave.get();
-            if ((projectPropertiesSave.booleanValue() && (state & GeneratedFilesHelper.FLAG_MODIFIED) == GeneratedFilesHelper.FLAG_MODIFIED) ||
+            if ((projectPropertiesSave && (state & GeneratedFilesHelper.FLAG_MODIFIED) == GeneratedFilesHelper.FLAG_MODIFIED) ||
                 state == (GeneratedFilesHelper.FLAG_UNKNOWN | GeneratedFilesHelper.FLAG_MODIFIED | 
                     GeneratedFilesHelper.FLAG_OLD_PROJECT_XML | GeneratedFilesHelper.FLAG_OLD_STYLESHEET)) {  //missing genfiles.properties
                 try {
@@ -739,6 +752,7 @@ public class EjbJarProject implements Project, FileChangeListener {
         
         ProjectOpenedHookImpl() {}
         
+        @Override
         protected void projectOpened() {
             evaluator().addPropertyChangeListener(EjbJarProject.this.ejbModule);
 
@@ -840,7 +854,7 @@ public class EjbJarProject implements Project, FileChangeListener {
                 Profile profile = EjbJarProject.this.getEjbModule().getJ2eeProfile();
                 Utils.logUsage(EjbJarProject.class, "USG_PROJECT_OPEN_EJB", new Object[] { serverName, profile }); // NOI18N
             } catch (IOException e) {
-                Logger.getLogger("global").log(Level.INFO, null, e);
+                LOGGER.log(Level.INFO, null, e);
             }
             
             // register project's classpaths to GlobalPathRegistry;
@@ -855,8 +869,10 @@ public class EjbJarProject implements Project, FileChangeListener {
 
             try {
                 getProjectDirectory().getFileSystem().runAtomicAction(new AtomicAction() {
+                    @Override
                     public void run() throws IOException {
                         ProjectManager.mutex().writeAccess(new Runnable() {
+                            @Override
                             public void run() {
                                 updateProject();
                             }
@@ -864,7 +880,7 @@ public class EjbJarProject implements Project, FileChangeListener {
                     }
                 });
             } catch (IOException e) {
-                Logger.getLogger("global").log(Level.INFO, null, e);
+                LOGGER.log(Level.INFO, null, e);
             }
             
             String compileOnSave = getProperty(AntProjectHelper.PROJECT_PROPERTIES_PATH, EjbJarProjectProperties.J2EE_COMPILE_ON_SAVE);
@@ -970,6 +986,7 @@ public class EjbJarProject implements Project, FileChangeListener {
             }
         }
         
+        @Override
         protected void projectClosed() {
             evaluator().removePropertyChangeListener(EjbJarProject.this.ejbModule);
 
@@ -1014,6 +1031,7 @@ public class EjbJarProject implements Project, FileChangeListener {
      */
     private final class AntArtifactProviderImpl implements AntArtifactProvider {
         
+        @Override
         public AntArtifact[] getBuildArtifacts() {
             return new AntArtifact[] {
                 helper.createSimpleAntArtifact(JavaProjectConstants.ARTIFACT_TYPE_JAR, "dist.jar", helper.getStandardPropertyEvaluator(), "dist", "clean"), // NOI18N
@@ -1025,16 +1043,19 @@ public class EjbJarProject implements Project, FileChangeListener {
 
     private class DeployOnSaveSupportProxy implements DeployOnSaveSupport {
 
+        @Override
         public synchronized void addArtifactListener(ArtifactListener listener) {
             css.addArtifactListener(listener);
             artifactSupport.addArtifactListener(listener);
         }
 
+        @Override
         public synchronized void removeArtifactListener(ArtifactListener listener) {
             css.removeArtifactListener(listener);
             artifactSupport.removeArtifactListener(listener);
         }
 
+        @Override
         public boolean containsIdeArtifacts() {
             return DeployOnSaveUtils.containsIdeArtifacts(eval, updateHelper, "build.classes.dir");
         }
@@ -1117,6 +1138,7 @@ public class EjbJarProject implements Project, FileChangeListener {
             EjbJarProject.this.evaluator().removePropertyChangeListener(this);
         }
 
+        @Override
         public void propertyChange(PropertyChangeEvent evt) {
             if (EjbJarProjectProperties.META_INF.equals(evt.getPropertyName())
                     || EjbJarProjectProperties.J2EE_COMPILE_ON_SAVE.equals(evt.getPropertyName())
@@ -1544,11 +1566,11 @@ public class EjbJarProject implements Project, FileChangeListener {
             return privileged.toArray(new String[privileged.size()]);
         }
         
-        private void checkEnvironment(){
-            if (!checked){
+        private void checkEnvironment() {
+            if (!checked) {
                 Profile version=Profile.fromPropertiesString(evaluator().getProperty(EjbJarProjectProperties.J2EE_PLATFORM));
                 isEE5 = Profile.JAVA_EE_5==version;
-                isEE6Plus = Profile.JAVA_EE_6_FULL==version || Profile.JAVA_EE_7_FULL==version;
+                isEE6Plus = version.isAtLeast(Profile.JAVA_EE_6_WEB);
                 final Object srcType = helper.getAntProjectHelper().
                         getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.JAVA_SOURCE_BASED);
                 if ("false".equals(srcType)) {
@@ -1570,22 +1592,27 @@ public class EjbJarProject implements Project, FileChangeListener {
             this.apiModule = apiModule;
         }
 
+        @Override
         public FileObject getDeploymentDescriptor() {
             return apiModule.getDeploymentDescriptor();
         }
 
+        @Override
         public String getJ2eePlatformVersion() {
             return apiModule.getJ2eePlatformVersion();
         }
 
+        @Override
         public FileObject[] getJavaSources() {
             return apiModule.getJavaSources();
         }
 
+        @Override
         public FileObject getMetaInf() {
             return apiModule.getMetaInf();
         }
 
+        @Override
         public MetadataModel<EjbJarMetadata> getMetadataModel() {
             return apiModule.getMetadataModel();
         }
@@ -1599,22 +1626,27 @@ public class EjbJarProject implements Project, FileChangeListener {
             this.provider = provider;
         }
 
+        @Override
         public FileObject getDeploymentDescriptor() {
             return provider.getDeploymentDescriptor();
         }
 
+        @Override
         public Profile getJ2eeProfile() {
             return provider.getJ2eeProfile();
         }
 
+        @Override
         public FileObject[] getJavaSources() {
             return provider.getJavaSources();
         }
 
+        @Override
         public FileObject getMetaInf() {
             return provider.getMetaInf();
         }
 
+        @Override
         public MetadataModel<EjbJarMetadata> getMetadataModel() {
             return provider.getMetadataModel();
         }
@@ -1623,6 +1655,7 @@ public class EjbJarProject implements Project, FileChangeListener {
 
     private class EjbExtenderImplementation implements AntBuildExtenderImplementation {
         //add targets here as required by the external plugins..
+        @Override
         public List<String> getExtensibleTargets() {
             String[] targets = new String[] {
                 "-do-init", "-init-check", "-post-clean", "jar", "-pre-pre-compile","-do-compile","-do-compile-single", "-pre-dist" //NOI18N
@@ -1630,6 +1663,7 @@ public class EjbJarProject implements Project, FileChangeListener {
             return Arrays.asList(targets);
         }
 
+        @Override
         public Project getOwningProject() {
             return EjbJarProject.this;
         }
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProvider.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProvider.java
index bbfe5a4..bc69bec 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProvider.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProvider.java
@@ -161,6 +161,7 @@ public final class EjbJarProvider extends J2eeModuleProvider
         return f;
     }
     
+    @Override
     public File getDeploymentConfigurationFile(String name) {
         String path = getConfigSupport().getContentRelativePath(name);
         if (path == null) {
@@ -198,6 +199,7 @@ public final class EjbJarProvider extends J2eeModuleProvider
         return null;
     }
     
+    @Override
     public synchronized J2eeModule getJ2eeModule () {
         if (j2eeModule == null) {
             j2eeModule = J2eeModuleFactory.createJ2eeModule(this);
@@ -205,6 +207,7 @@ public final class EjbJarProvider extends J2eeModuleProvider
         return j2eeModule;
     }
     
+    @Override
     public org.netbeans.modules.j2ee.deployment.devmodules.api.ModuleChangeReporter getModuleChangeReporter() {
         return this;
     }
@@ -236,17 +239,20 @@ public final class EjbJarProvider extends J2eeModuleProvider
         return helper.getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.J2EE_SERVER_INSTANCE);
     }
     
+    @Override
     public void setServerInstanceID(String serverInstanceID) {
         assert serverInstanceID != null : "passed serverInstanceID cannot be null"; // NOI18N
         EjbJarProjectProperties.setServerInstance(project, helper, serverInstanceID);
     }
     
+    @Override
     public Iterator<J2eeModule.RootedEntry> getArchiveContents() throws java.io.IOException {
         FileObject content = getContentDirectory();
         content.refresh();
         return new IT(content);
     }
     
+    @Override
     public FileObject getContentDirectory() {
         return getFileObject(ProjectProperties.BUILD_CLASSES_DIR);
     }
@@ -259,6 +265,7 @@ public final class EjbJarProvider extends J2eeModuleProvider
         return getFile(ProjectProperties.BUILD_CLASSES_DIR);
     }
     
+    @Override
     public <T> MetadataModel<T> getMetadataModel(Class<T> type) {
         if (type == EjbJarMetadata.class) {
             @SuppressWarnings("unchecked") // NOI18N
@@ -280,14 +287,17 @@ public final class EjbJarProvider extends J2eeModuleProvider
         return metaInfFo.getFileObject(WebServicesConstants.WEBSERVICES_DD, "xml"); // NOI18N
     }
     
+    @Override
     public org.netbeans.modules.j2ee.deployment.common.api.EjbChangeDescriptor getEjbChanges(long timestamp) {
         return this;
     }
     
+    @Override
     public J2eeModule.Type getModuleType() {
         return J2eeModule.Type.EJB;
     }
     
+    @Override
     public String getModuleVersion() {
         // return a version based on the Java EE version
         Profile platformVersion = getJ2eeProfile();
@@ -306,6 +316,7 @@ public final class EjbJarProvider extends J2eeModuleProvider
         }
     }
     
+    @Override
     public void propertyChange(PropertyChangeEvent evt) {
         if (evt.getPropertyName().equals(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.PROPERTY_VERSION)) {
             String oldVersion = (String) evt.getOldValue();
@@ -326,12 +337,14 @@ public final class EjbJarProvider extends J2eeModuleProvider
         }
     }
     
+    @Override
     public String getUrl() {
         EditableProperties ep =  helper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
         String name = ep.getProperty(EjbJarProjectProperties.JAR_NAME);
         return name == null ? "" : ('/' + name);
     }
     
+    @Override
     public boolean isManifestChanged(long timestamp) {
         return false;
     }
@@ -340,10 +353,12 @@ public final class EjbJarProvider extends J2eeModuleProvider
         throw new UnsupportedOperationException("Cannot customize URL of EJB module"); // NOI18N
     }
     
+    @Override
     public boolean ejbsChanged() {
         return false;
     }
     
+    @Override
     public String[] getChangedEjbs() {
         return new String[] {};
     }
@@ -406,6 +421,7 @@ public final class EjbJarProvider extends J2eeModuleProvider
             // thread -- deadlock-prone, see issue #64888. therefore invoking
             // only in the AWT thread
             Runnable r = new Runnable() {
+                @Override
                 public void run() {
                     if (!SwingUtilities.isEventDispatchThread()) {
                         SwingUtilities.invokeLater(this);
@@ -440,10 +456,12 @@ public final class EjbJarProvider extends J2eeModuleProvider
         }
     }
 
+    @Override
     public void addPropertyChangeListener(PropertyChangeListener listener) {
         getPropertyChangeSupport().addPropertyChangeListener(listener);
     }
 
+    @Override
     public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
         if (propertyChangeSupport == null) {
             return;
@@ -482,17 +500,17 @@ public final class EjbJarProvider extends J2eeModuleProvider
                     FileUtil.toFile(project.getProjectDirectory()), project.evaluator(), new String[]{"javac.classpath"}));
         List<File> files = new ArrayList<File>();
         for (FileObject fo : cp.getRoots()) {
-            fo = FileUtil.getArchiveFile(fo);
-            if (fo == null) {
+            if (FileUtil.getArchiveFile(fo) == null) {
                 continue;
             }
-            files.add(FileUtil.toFile(fo));
+            files.add(FileUtil.toFile(FileUtil.getArchiveFile(fo)));
         }
         return files.toArray(new File[files.size()]);
     }
 
     private class EjbJarResourceChangeReporter implements ResourceChangeReporterImplementation {
 
+        @Override
         public boolean isServerResourceChanged(long lastDeploy) {
             File resDir = getResourceDirectory();
             if (resDir != null && resDir.exists() && resDir.isDirectory()) {
@@ -518,15 +536,18 @@ public final class EjbJarProvider extends J2eeModuleProvider
             this.root = f;
         }
         
+        @Override
         public boolean hasNext() {
             return ch.hasMoreElements();
         }
         
+        @Override
         public J2eeModule.RootedEntry next() {
             FileObject f = (FileObject) ch.nextElement();
             return new FSRootRE(root, f);
         }
         
+        @Override
         public void remove() {
             throw new UnsupportedOperationException();
         }
@@ -542,10 +563,12 @@ public final class EjbJarProvider extends J2eeModuleProvider
             this.root = root;
         }
         
+        @Override
         public FileObject getFileObject() {
             return f;
         }
         
+        @Override
         public String getRelativePath() {
             return FileUtil.getRelativePath(root, f);
         }
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/api/EjbJarProjectGenerator.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/api/EjbJarProjectGenerator.java
index cb33bea..32f500c 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/api/EjbJarProjectGenerator.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/api/EjbJarProjectGenerator.java
@@ -66,7 +66,7 @@ import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
 /**
- * Create a fresh EjbProject from scratch or by importing and exisitng ejb module
+ * Create a fresh EjbProject from scratch or by importing an existing ejb module
  * in one of the recognized directory structures.
  *
  * @author Pavel Buzek
@@ -123,6 +123,7 @@ public class EjbJarProjectGenerator {
         // create project in one FS atomic action:
         FileSystem fs = projectDir.getFileSystem();
         fs.runAtomicAction(new FileSystem.AtomicAction() {
+            @Override
             public void run() throws IOException {
                 AntProjectHelper helper = createProjectImpl(createData, projectDir);
                 h[0] = helper;
@@ -165,6 +166,7 @@ public class EjbJarProjectGenerator {
         final ReferenceHelper refHelper = p.getReferenceHelper();
         try {
             ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction<Void>() {
+                @Override
                 public Void run() throws Exception {
                     copyRequiredLibraries(h, refHelper, createData);
                     return null;
@@ -174,16 +176,26 @@ public class EjbJarProjectGenerator {
             Exceptions.printStackTrace(ex.getException());
         }
         
-        // create ejb-jar.xml
+        // Create ejb-jar.xml just for J2EE (1.3 and 1.4)
         Profile profile = createData.getJavaEEProfile();
-        if (!Profile.JAVA_EE_5.equals(profile) && !Profile.JAVA_EE_6_FULL.equals(profile) && !Profile.JAVA_EE_6_WEB.equals(profile) &&
-                !Profile.JAVA_EE_7_FULL.equals(profile) && !Profile.JAVA_EE_7_WEB.equals(profile)) {
-            String resource = "org-netbeans-modules-j2ee-ejbjarproject/ejb-jar-2.1.xml";
+        boolean isJ2EE = false;
+
+        if(profile.equals(Profile.J2EE_14) || profile.equals(Profile.J2EE_13)) {
+            isJ2EE = true;
+        }
+        if(isJ2EE) {
+            String resource;
+            if(profile.equals(Profile.J2EE_14)) {
+                resource = "org-netbeans-modules-j2ee-ejbjarproject/ejb-jar-2.1.xml";
+            } else {
+                resource = "org-netbeans-modules-j2ee-ejbjarproject/ejb-jar-2.0.xml";
+            }
             FileObject ddFile = FileUtil.copyFile(FileUtil.getConfigFile(resource), confRoot, "ejb-jar"); //NOI18N
             EjbJar ejbJar = DDProvider.getDefault().getDDRoot(ddFile);
             ejbJar.setDisplayName(name);
             ejbJar.write(ddFile);
         }
+
         if (createData.isCDIEnabled()) {
             DDHelper.createBeansXml(profile, confRoot);
         }
@@ -271,6 +283,7 @@ public class EjbJarProjectGenerator {
         // create project in one FS atomic action:
         FileSystem fs = projectDir.getFileSystem();
         fs.runAtomicAction(new FileSystem.AtomicAction() {
+            @Override
             public void run() throws IOException {
                 AntProjectHelper helper = importProjectImpl(createData, projectDir);
                 h[0] = helper;
@@ -306,6 +319,7 @@ public class EjbJarProjectGenerator {
         final ReferenceHelper refHelper = p.getReferenceHelper();
         try {
             ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction<Void>() {
+                @Override
                 public Void run() throws Exception {
                     Element data = h.getPrimaryConfigurationData(true);
                     Document doc = data.getOwnerDocument();
@@ -439,7 +453,7 @@ public class EjbJarProjectGenerator {
             Profile j2eeProfile, String serverInstanceID, String librariesDefinition, boolean skipTests) throws IOException {
 
         Utils.logUI(NbBundle.getBundle(EjbJarProjectGenerator.class), "UI_EJB_PROJECT_CREATE_SHARABILITY", // NOI18N
-                new Object[]{Boolean.valueOf(librariesDefinition != null), Boolean.FALSE});
+                new Object[]{(librariesDefinition != null), Boolean.FALSE});
 
         AntProjectHelper h = ProjectGenerator.createProject(dirFO, EjbJarProjectType.TYPE, librariesDefinition);
         final EjbJarProject prj = (EjbJarProject) ProjectManager.getDefault().findProject(h.getProjectDirectory());
@@ -489,9 +503,7 @@ public class EjbJarProjectGenerator {
         SpecificationVersion v = defaultPlatform.getSpecification().getVersion();
         String sourceLevel = v.toString();
         // #181215: JDK 6 should be the default source/binary format for Java EE 6 projects
-        if (sourceLevel.equals("1.7")) {
-            sourceLevel = "1.6";
-        }
+        // #181215: Not neccessary anymore because NetBeans should run on minimum JDK 8
         ep.setProperty(EjbJarProjectProperties.JAVAC_SOURCE, sourceLevel); //NOI18N
         ep.setProperty(EjbJarProjectProperties.JAVAC_TARGET, sourceLevel); //NOI18N
         
@@ -606,8 +618,10 @@ public class EjbJarProjectGenerator {
         // it is deadlock-prone
         try {
             projectDir.getFileSystem().runAtomicAction(new AtomicAction() {
+                @Override
                 public void run() throws IOException {
                     ProjectManager.mutex().writeAccess(new Runnable() {
+                        @Override
                         public void run() {
                             try {
                                 EjbJarProject project = (EjbJarProject)ProjectManager.getDefault().findProject(helper.getProjectDirectory());
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java
index 48ffe0b..ff2c04f 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java
@@ -58,7 +58,6 @@ import org.netbeans.spi.project.support.ant.PropertyEvaluator;
 import org.openide.util.MutexException;
 import org.openide.util.Mutex;
 import org.netbeans.api.project.ProjectManager;
-import org.netbeans.modules.j2ee.common.SharabilityUtility;
 import org.netbeans.modules.java.api.common.classpath.ClassPathSupport;
 import org.netbeans.modules.java.api.common.project.ui.ClassPathUiSupport;
 import org.netbeans.modules.javaee.project.api.ant.DeployOnSaveUtils;
@@ -323,12 +322,15 @@ final public class EjbJarProjectProperties {
         PLATFORM_LIST_RENDERER = PlatformUiSupport.createPlatformListCellRenderer();
         SpecificationVersion minimalSourceLevel = null;
         Profile profile = Profile.fromPropertiesString(evaluator.getProperty(J2EE_PLATFORM));
-        if (Profile.JAVA_EE_6_FULL.equals(profile)) {
+
+        if (Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile)) {
+            minimalSourceLevel = new SpecificationVersion("1.8");
+        } else if (Profile.JAVA_EE_7_FULL.equals(profile)) {
+            minimalSourceLevel = new SpecificationVersion("1.7");
+        } else if (Profile.JAVA_EE_6_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.6");
         } else if (Profile.JAVA_EE_5.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.5");
-        } else if (Profile.JAVA_EE_7_FULL.equals(profile)) {
-            minimalSourceLevel = new SpecificationVersion("1.7");
         }
         JAVAC_SOURCE_MODEL = PlatformUiSupport.createSourceLevelComboBoxModel (PLATFORM_MODEL, evaluator.getProperty(JAVAC_SOURCE), evaluator.getProperty(JAVAC_TARGET), minimalSourceLevel);
         JAVAC_SOURCE_RENDERER = PlatformUiSupport.createSourceLevelListCellRenderer ();
@@ -574,8 +576,9 @@ final public class EjbJarProjectProperties {
         }
     }
     
-    /** Finds out what are new and removed project dependencies and 
-     * applyes the info to the project
+    /** 
+     * Finds out what are new and removed project dependencies and 
+     * applies the info to the project
      */   
     private void resolveProjectDependenciesNew() {
             
diff --git a/enterprise/j2ee.ejbrefactoring/nbproject/project.properties b/enterprise/j2ee.ejbrefactoring/nbproject/project.properties
index b200bb4..8c6d610 100644
--- a/enterprise/j2ee.ejbrefactoring/nbproject/project.properties
+++ b/enterprise/j2ee.ejbrefactoring/nbproject/project.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 javac.compilerargs=-Xlint -Xlint:-serial
-javac.source=1.6
+javac.source=1.8
diff --git a/enterprise/j2ee.ejbverification/nbproject/project.properties b/enterprise/j2ee.ejbverification/nbproject/project.properties
index 4afe2d4..a2e1ad3 100644
--- a/enterprise/j2ee.ejbverification/nbproject/project.properties
+++ b/enterprise/j2ee.ejbverification/nbproject/project.properties
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 javac.compilerargs=-Xlint -Xlint:-serial
-javac.source=1.7
+javac.source=1.8
 
 # requires nb.javac for compiling of tests on Mac
 requires.nb.javac=true
diff --git a/enterprise/j2ee.genericserver/nbproject/project.properties b/enterprise/j2ee.genericserver/nbproject/project.properties
index 4d3d434..8c6d610 100644
--- a/enterprise/j2ee.genericserver/nbproject/project.properties
+++ b/enterprise/j2ee.genericserver/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-javac.compilerargs=-Xlint:unchecked
+javac.compilerargs=-Xlint -Xlint:-serial
 javac.source=1.8
diff --git a/enterprise/j2ee.kit/nbproject/project.properties b/enterprise/j2ee.kit/nbproject/project.properties
index 026b933..f55e0a4 100644
--- a/enterprise/j2ee.kit/nbproject/project.properties
+++ b/enterprise/j2ee.kit/nbproject/project.properties
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-javac.source=1.6
-
+javac.compilerargs=-Xlint -Xlint:-serial
+javac.source=1.8
 test.config.uicommit.includes=\
     org/netbeans/test/j2ee/J2EEValidation.class
 
diff --git a/enterprise/javaee.project/nbproject/project.properties b/enterprise/javaee.project/nbproject/project.properties
index ab06b41..0f4ec98 100644
--- a/enterprise/javaee.project/nbproject/project.properties
+++ b/enterprise/javaee.project/nbproject/project.properties
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-javac.source=1.7
+javac.source=1.8
 javac.compilerargs=-Xlint -Xlint:-serial
diff --git a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java
index 90dada1..0abeac4 100644
--- a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java
+++ b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java
@@ -149,29 +149,31 @@ final class J2eeVersionWarningPanel extends javax.swing.JPanel {
         SpecificationVersion version = defaultPlatform.getSpecification().getVersion();
         String sourceLevel = version.toString();
 
-        // no warning if 1.5 is the default for j2ee15
-        if (j2eeProfile == Profile.JAVA_EE_5 && isAcceptableSourceLevel("1.5", sourceLevel, acceptableSourceLevels)) // NOI18N
+        // no warning if 1.5 is the default for jee5
+        if (j2eeProfile == Profile.JAVA_EE_5 && isAcceptableSourceLevel("1.5", sourceLevel, acceptableSourceLevels)) { // NOI18N
             return null;
-
-        // no warning if 1.6 is the default for j2ee16
+        }
+        // no warning if 1.6 is the default for jee6
         if ((j2eeProfile == Profile.JAVA_EE_6_FULL || j2eeProfile == Profile.JAVA_EE_6_WEB) &&
-                isAcceptableSourceLevel("1.6", sourceLevel, acceptableSourceLevels)) // NOI18N
+                isAcceptableSourceLevel("1.6", sourceLevel, acceptableSourceLevels)) { // NOI18N
             return null;
-
-        // no warning if 1.7 is the default for j2ee7
+        }
+        // no warning if 1.7 is the default for jee7
         if ((j2eeProfile == Profile.JAVA_EE_7_FULL || j2eeProfile == Profile.JAVA_EE_7_WEB) &&
-                isAcceptableSourceLevel("1.7", sourceLevel, acceptableSourceLevels)) // NOI18N
+                isAcceptableSourceLevel("1.7", sourceLevel, acceptableSourceLevels)) { // NOI18N
             return null;
-
-        // no warning if 1.8 is the default for j2ee8
+        }
+        // no warning if 1.8 is the default for jee8
         if ((j2eeProfile == Profile.JAVA_EE_8_FULL || j2eeProfile == Profile.JAVA_EE_8_WEB) &&
-                isAcceptableSourceLevel("1.8", sourceLevel, acceptableSourceLevels)) // NOI18N
+                isAcceptableSourceLevel("1.8", sourceLevel, acceptableSourceLevels)) { // NOI18N
             return null;
-
-            if ((j2eeProfile == Profile.JAKARTA_EE_8_FULL || j2eeProfile == Profile.JAKARTA_EE_8_WEB) &&
-                    isAcceptableSourceLevel("1.8", sourceLevel, acceptableSourceLevels)) // NOI18N
-                return null;
-
+        }
+        // no warning if 1.8 is the default for jakartaee8
+        if ((j2eeProfile == Profile.JAKARTA_EE_8_FULL || j2eeProfile == Profile.JAKARTA_EE_8_WEB) &&
+                isAcceptableSourceLevel("1.8", sourceLevel, acceptableSourceLevels)) { // NOI18N
+            return null;
+        }
+        
         if (j2eeProfile == Profile.JAVA_EE_5) {
             JavaPlatform[] java15Platforms = getJavaPlatforms("1.5"); //NOI18N
             if (java15Platforms.length > 0) {
@@ -205,18 +207,18 @@ final class J2eeVersionWarningPanel extends javax.swing.JPanel {
             JavaPlatform[] java18Platforms = getJavaPlatforms("1.8"); //NOI18N
             if (java18Platforms.length > 0) {
                 return WARN_SET_JDK_8;
-           }  else {
-                    if (canSetSourceLevel("1.8")) {
-                        return WARN_SET_SOURCE_LEVEL_8;
-                    } else {
-                        return WARN_JDK_8_REQUIRED;
-                    }
+            } else {
+                if (canSetSourceLevel("1.8")) {
+                    return WARN_SET_SOURCE_LEVEL_8;
+                } else {
+                    return WARN_JDK_8_REQUIRED;
                 }
+            }
         } else if (j2eeProfile == Profile.JAKARTA_EE_8_FULL || j2eeProfile == Profile.JAKARTA_EE_8_WEB) {
             JavaPlatform[] java18Platforms = getJavaPlatforms("1.8"); //NOI18N
             if (java18Platforms.length > 0) {
                 return WARN_SET_JDK_8;
-        } else {
+            } else {
                 if (canSetSourceLevel("1.8")) {
                     return WARN_SET_SOURCE_LEVEL_8;
                 } else {
diff --git a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java
index 4c57c12..2456837 100644
--- a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java
+++ b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java
@@ -607,7 +607,11 @@ private void serverLibraryCheckboxActionPerformed(java.awt.event.ActionEvent evt
                 Set<String> jdks = j2eePlatform.getSupportedJavaPlatformVersions();
                 // make sure that chosen source level is suported by server:
                 if (jdks != null && !jdks.contains(sourceLevel)) { // workaround for #212146 when jdks == null
-                    if ("1.7".equals(sourceLevel) && jdks.contains("1.6")) {
+                    if ("11".equals(sourceLevel) && jdks.contains("1.8")) {
+                        sourceLevel = "1.8";
+                    } else if ("1.8".equals(sourceLevel) && jdks.contains("1.7")) {
+                        sourceLevel = "1.7";
+                    } else if ("1.7".equals(sourceLevel) && jdks.contains("1.6")) {
                         sourceLevel = "1.6";
                     } else if ("1.6".equals(sourceLevel) && jdks.contains("1.5")) {
                         sourceLevel = "1.5";
@@ -623,10 +627,14 @@ private void serverLibraryCheckboxActionPerformed(java.awt.event.ActionEvent evt
             if (j2ee != null) {
                 String warningType = warningPanel.getWarningType();
                 if (warningType != null) {
-                    if (warningType.equals(J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_15)) {
-                        sourceLevel = "1.5"; //NOI18N
+                    if (warningType.equals(J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_8)) {
+                        sourceLevel = "1.8"; //NOI18N
+                    } else if (warningType.equals(J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_7)) {
+                        sourceLevel = "1.7"; //NOI18N
                     } else if (warningType.equals(J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_6)) {
                         sourceLevel = "1.6"; //NOI18N
+                    } else if (warningType.equals(J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_15)) {
+                        sourceLevel = "1.5"; //NOI18N
                     }
                 }
             }
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ejb/EjbJarImpl.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ejb/EjbJarImpl.java
index 04a8d33..e4ca788 100644
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ejb/EjbJarImpl.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ejb/EjbJarImpl.java
@@ -76,16 +76,20 @@ public class EjbJarImpl extends BaseEEModuleImpl implements EjbJarImplementation
             return profile;
         }
         String ver = getModuleVersion();
-        if (EjbJar.VERSION_2_1.equals(ver)) {
-            return Profile.J2EE_14;
+
+        if (EjbJar.VERSION_3_2.equals(ver)) {
+            return Profile.JAVA_EE_7_FULL;
+        }
+        if (EjbJar.VERSION_3_1.equals(ver)) {
+            return Profile.JAVA_EE_6_FULL;
         }
         if (EjbJar.VERSION_3_0.equals(ver)) {
             return Profile.JAVA_EE_5;
         }
-        if (EjbJar.VERSION_3_1.equals(ver)) {
-            return Profile.JAVA_EE_6_FULL;
+        if (EjbJar.VERSION_2_1.equals(ver)) {
+            return Profile.J2EE_14;
         }
-        return Profile.JAVA_EE_5;
+        return Profile.JAVA_EE_8_FULL;
     }
     
     @Override
@@ -104,13 +108,14 @@ public class EjbJarImpl extends BaseEEModuleImpl implements EjbJarImplementation
         String version = PluginPropertyUtils.getPluginProperty(project,
                 Constants.GROUP_APACHE_PLUGINS, Constants.PLUGIN_EJB,
                 "ejbVersion", "ejb", "ejb.ejbVersion"); //NOI18N
+
         if (version != null) {
             return version.trim();
         }
         // in case there is no descriptor, we probably have 3.x spec stuff?
         //TODO we cannot differenciate ee5 and ee6 at this point, most cases shall
         // be coved by the previous cases
-       return EjbJar.VERSION_3_0;
+       return EjbJar.VERSION_3_2;
     }
 
     @Override
diff --git a/enterprise/web.beans/nbproject/project.properties b/enterprise/web.beans/nbproject/project.properties
index 0d691a7..665c1b5 100644
--- a/enterprise/web.beans/nbproject/project.properties
+++ b/enterprise/web.beans/nbproject/project.properties
@@ -15,6 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
+javac.compilerargs=-Xlint -Xlint:-serial
 javac.source=1.8
 requires.nb.javac=true
 
diff --git a/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java b/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java
index ec61247..13c1a6d 100644
--- a/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java
+++ b/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java
@@ -20,7 +20,6 @@
 package org.netbeans.modules.web.beans.wizard;
 
 import java.awt.Component;
-import java.io.File;
 import java.io.IOException;
 import java.util.*;
 import javax.swing.JComponent;
@@ -70,19 +69,21 @@ public class BeansXmlIterator implements TemplateWizard.Iterator {
     private transient WizardDescriptor.Panel[] panels;
     private transient J2eeProjectType type;
 
+    @Override
     public Set<DataObject> instantiate(TemplateWizard wizard) throws IOException {
         String targetName = Templates.getTargetName(wizard);
         FileObject targetDir = Templates.getTargetFolder(wizard);
         Project project = Templates.getProject(wizard);
-        boolean useCDI11 = true;
+        Profile profile = null;
         if (project != null) {
             J2eeProjectCapabilities cap = J2eeProjectCapabilities.forProject(project);
-            if (cap != null && !cap.isCdi11Supported()) {
-                useCDI11 = false;
+            if (cap != null && cap.isCdi20Supported()) {
+                profile = Profile.JAVA_EE_8_FULL;
+            } else if (cap != null && cap.isCdi11Supported()) {
+                profile = Profile.JAVA_EE_7_FULL;
             }
         }
-        FileObject fo = DDHelper.createBeansXml(
-                useCDI11 ? Profile.JAVA_EE_7_FULL : Profile.JAVA_EE_6_FULL, targetDir, targetName);
+        FileObject fo = DDHelper.createBeansXml(profile != null ? profile : Profile.JAVA_EE_6_FULL, targetDir, targetName);
         if (fo != null) {
             if ( project != null ){
                 CdiUtil logger = project.getLookup().lookup( CdiUtil.class );
@@ -98,6 +99,7 @@ public class BeansXmlIterator implements TemplateWizard.Iterator {
         }
     }
 
+    @Override
     public void initialize(TemplateWizard wizard) {
         WizardDescriptor.Panel folderPanel;
         Project project = Templates.getProject( wizard );
@@ -143,7 +145,7 @@ public class BeansXmlIterator implements TemplateWizard.Iterator {
             if (steps[i] == null) {
                 steps[i] = jc.getName ();
             }
-            jc.putClientProperty (WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, Integer.valueOf(i));
+            jc.putClientProperty (WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, i);
             jc.putClientProperty (WizardDescriptor.PROP_CONTENT_DATA, steps); 
         }
 
@@ -200,40 +202,49 @@ public class BeansXmlIterator implements TemplateWizard.Iterator {
         return project.getProjectDirectory();
     }
 
+    @Override
     public void uninitialize(TemplateWizard wiz) {
         panels = null;
     }
 
+    @Override
     public Panel<WizardDescriptor> current() {
         return panels[index];
     }
 
+    @Override
     public String name() {
         return NbBundle.getMessage(BeansXmlIterator.class, "TITLE_x_of_y",
                 index + 1, panels.length);
     }
 
+    @Override
     public boolean hasNext() {
         return index < panels.length - 1;
     }
 
+    @Override
     public boolean hasPrevious() {
         return index > 0;
     }
 
+    @Override
     public void nextPanel() {
         if (! hasNext ()) throw new NoSuchElementException ();
         index++;
     }
 
+    @Override
     public void previousPanel() {
         if (! hasPrevious ()) throw new NoSuchElementException ();
         index--;
     }
 
+    @Override
     public void addChangeListener(ChangeListener l) {
     }
 
+    @Override
     public void removeChangeListener(ChangeListener l) {
     }
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists