[299747] Enable DD on Java EE 6 projects
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/config_prop_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/config_prop_obj.gif
new file mode 100644
index 0000000..bc47239
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/config_prop_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/connection.gif b/plugins/org.eclipse.jst.jee.ui/icons/connection.gif
new file mode 100755
index 0000000..e8efe69
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/connection.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/connectorgroup_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/connectorgroup_obj.gif
new file mode 100644
index 0000000..ad3af3c
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/connectorgroup_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/license_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/license_obj.gif
new file mode 100644
index 0000000..50e8dbd
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/license_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/resource_adapter_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/resource_adapter_obj.gif
new file mode 100644
index 0000000..959c660
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/resource_adapter_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/plugin.properties b/plugins/org.eclipse.jst.jee.ui/plugin.properties
index deb56ba..e27984c 100644
--- a/plugins/org.eclipse.jst.jee.ui/plugin.properties
+++ b/plugins/org.eclipse.jst.jee.ui/plugin.properties
@@ -24,4 +24,5 @@
 EJB_NAVIGATOR_CONTENT = JEE Navigator Content EJB
 WEB_NAVIGATOR_CONTENT = JEE Navigator Content WEB
 EAR_NAVIGATOR_CONTENT = JEE Navigator Content EAR
-APP_CLIENT_NAVIGATOR_CONTENT = JEE Navigator Content Application Client
\ No newline at end of file
+APP_CLIENT_NAVIGATOR_CONTENT = JEE Navigator Content Application Client
+CONNECTOR_NAVIGATOR_CONTENT = JEE Navigator Content Connector
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.jee.ui/plugin.xml b/plugins/org.eclipse.jst.jee.ui/plugin.xml
index c3c6e9c..5e99726 100644
--- a/plugins/org.eclipse.jst.jee.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.jee.ui/plugin.xml
@@ -477,7 +477,7 @@
                  <test
                        forcePluginActivation="true"
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
-                       value="jst.appclient:5.0">
+                       value="jst.ejb:3.1">
                  </test>
               </or>
            </adapt>
@@ -706,6 +706,11 @@
                        forcePluginActivation="true"
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
                        value="jst.web:2.5"/>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.web:3.0">
+                 </test>
               </or>
            </adapt>
    <instanceof
@@ -879,21 +884,25 @@
      <triggerPoints>
         <or>
            <instanceof
-                 value="org.eclipse.core.resources.IProject">
-           </instanceof>
-           <instanceof
-                 value="org.eclipse.jst.jee.ui.internal.navigator.ear.BundledNode">
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ear..BundledNode">
            </instanceof>
             <instanceof
                  value="org.eclipse.jst.jee.ui.internal.navigator.ear.GroupEARProvider">
            </instanceof>
            <adapt
                  type="org.eclipse.core.resources.IProject">
+                 <or>
               <test
                     forcePluginActivation="true"
                     property="org.eclipse.wst.common.project.facet.core.projectFacet"
                     value="jst.ear:5.0">
               </test>
+                <test
+                    forcePluginActivation="true"
+                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                    value="jst.ear:6.0">
+              </test>
+              </or>
            </adapt>
            <instanceof
                  value="org.eclipse.jst.jee.ui.internal.navigator.ear.ModulesNode">
@@ -1147,7 +1156,7 @@
         id="org.eclipse.jst.jee.ui.appclient"
         labelProvider="org.eclipse.jst.jee.ui.internal.navigator.AppClient5LabelProvider"
         name="%APP_CLIENT_NAVIGATOR_CONTENT"
-        priority="highest">
+          priority="highest">
      <triggerPoints>
         <or>
            <instanceof
@@ -1155,11 +1164,18 @@
            </instanceof>
            <adapt
                  type="org.eclipse.core.resources.IProject">
+                 <or>
               <test
                     forcePluginActivation="true"
                     property="org.eclipse.wst.common.project.facet.core.projectFacet"
                     value="jst.appclient:5.0">
               </test>
+              <test
+                    forcePluginActivation="true"
+                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                    value="jst.appclient:6.0">
+              </test>
+              </or>
            </adapt>
            <instanceof
                  value="org.eclipse.jst.javaee.core.JavaEEObject">
@@ -1184,6 +1200,43 @@
         </or>
      </possibleChildren>
   </navigatorContent>
+  <navigatorContent
+        activeByDefault="true"
+        contentProvider="org.eclipse.jst.jee.ui.internal.navigator.ConnectorContentProvider"
+        icon="icons/connectorgroup_obj.gif"
+        id="org.eclipse.jst.jee.ui.ra"
+        labelProvider="org.eclipse.jst.jee.ui.internal.navigator.ConnectorLabelProvider"
+        name="%CONNECTOR_NAVIGATOR_CONTENT"
+        priority="highest">
+     <possibleChildren>
+        <or>
+           <instanceof
+                 value="org.eclipse.jst.javaee.core.JavaEEObject">
+           </instanceof>
+           <instanceof
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ra.AbstractConnectorGroupProvider">
+           </instanceof>
+        </or>
+     </possibleChildren>
+     <triggerPoints>
+        <or>
+           <adapt
+                 type="org.eclipse.core.resources.IProject">
+              <or>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.connector:1.6">
+                 </test>
+              </or>
+           </adapt>
+           <instanceof
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ra.AbstractConnectorGroupProvider">
+           </instanceof>
+        </or>
+     </triggerPoints>
+  
+  </navigatorContent>
 	</extension>
    <extension
          point="org.eclipse.core.runtime.adapters">
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java
index af32aa9..aa593a4 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java
@@ -16,6 +16,7 @@
 public class Messages extends NLS {
 
 	private static final String BUNDLE_NAME = "org.eclipse.jst.jee.ui.internal.messages"; //$NON-NLS-1$
+	
 
 	private Messages() {
 		// Do not instantiate
@@ -27,6 +28,9 @@
 	public static String SESSION_BEANS;
 	public static String ENTITY_BEANS;
 	public static String MESSAGE_DRIVEN_BEANS;
+	public static String MessageAdapterNode_MESSAGE_ADAPTER;
+	public static String MessageListenerNode_MessageListener;
+	public static String ActicationSpecNode_ActivationSpec;
 	public static String ACTIVATION_CONFIG_PROPERTIES;
 	public static String ENTERPRISE_BEAN_CLASS_DESCRIPTION;
 	
@@ -58,6 +62,15 @@
 	public static String AddModuleToEarDropAssistant_Adding_module_to_ea_;
 	public static String ImportJEEModuleDropAssistant_Importing_Java_Enterprise_Edition_artifacts;
 	public static String ImportJEEModuleDropAssistant_Could_not_recognize_extension_0_;
+	public static String InboundRaNode_Inbound_Resource_adapter;
+	
+	public static String ConnectorLabelProvider_ADMIN_OBJECT;
+	public static String ConnectorLabelProvider_CONFIG_PROPERTY;
+	public static String ConnectorLabelProvider_ConnectionDefinition;
+	public static String ConnectorLabelProvider_LICENSE_ARTIFACT;
+	public static String ConnectorLabelProvider_RequiredConfigProperty;
+	public static String GroupRaContentProvider_RESOURCE_ADAPTER;
+	public static String OutboundRaNode_OutboundResourceAdapter;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties
index e12bba3..e3eb10a 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties
@@ -4,6 +4,9 @@
 SESSION_BEANS=Session Beans
 ENTITY_BEANS=Entity Beans (1.x-2.x)
 MESSAGE_DRIVEN_BEANS=Message-Driven Beans
+MessageAdapterNode_MESSAGE_ADAPTER=MessageAdapter
+MessageListenerNode_MessageListener=MessageListener 
+ActicationSpecNode_ActivationSpec=ActivationSpec  
 ACTIVATION_CONFIG_PROPERTIES=Activation Config Properties
 ENTERPRISE_BEAN_CLASS_DESCRIPTION=Enterprise Bean Class - 
 
@@ -32,3 +35,12 @@
 AddModuleToEarDropAssistant_Adding_module_to_ea_=Adding module to ear
 ImportJEEModuleDropAssistant_Importing_Java_Enterprise_Edition_artifacts=Importing Java Enterprise Edition artifacts
 ImportJEEModuleDropAssistant_Could_not_recognize_extension_0_=Could not recognize extension
+InboundRaNode_Inbound_Resource_adapter=InboundResourceAdapter
+
+ConnectorLabelProvider_ADMIN_OBJECT=AdminObject 
+ConnectorLabelProvider_CONFIG_PROPERTY=ConfigProperty 
+ConnectorLabelProvider_ConnectionDefinition=ConnectionDefinition 
+ConnectorLabelProvider_LICENSE_ARTIFACT=License
+ConnectorLabelProvider_RequiredConfigProperty=RequiredConfigProperty 
+GroupRaContentProvider_RESOURCE_ADAPTER=Resource Adapter
+OutboundRaNode_OutboundResourceAdapter=OutboundResourceAdapter
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorContentProvider.java
new file mode 100644
index 0000000..1541c52
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorContentProvider.java
@@ -0,0 +1,47 @@
+package org.eclipse.jst.jee.ui.internal.navigator;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.core.resources.IProject;

+import org.eclipse.jst.javaee.jca.Connector;

+import org.eclipse.jst.jee.ui.internal.navigator.ra.RaGroupContentProvider;

+

+public class ConnectorContentProvider extends JEE5ContentProvider {

+

+	public Object[] getChildren(Object aParentElement) {

+		List<Object> children = new ArrayList<Object>();

+		IProject project = null;

+		if (IProject.class.isInstance(aParentElement)) {

+			project = (IProject) aParentElement;

+				AbstractGroupProvider cachedContentProvider = getCachedContentProvider(project);

+				if (cachedContentProvider.isValid()){

+					children.add(cachedContentProvider);

+				}

+		} else if (AbstractGroupProvider.class.isInstance(aParentElement)){

+			AbstractGroupProvider abstractGroupProvider = (AbstractGroupProvider) aParentElement;

+			if (abstractGroupProvider.hasChildren()){

+				children.addAll(abstractGroupProvider.getChildren());

+			}

+		}

+		return children.toArray();

+	}

+

+	public Object getParent(Object element) {

+		return null;

+	}

+

+	public boolean hasChildren(Object element) {

+		return true;

+	}

+

+	public Object[] getElements(Object inputElement) {

+		return getChildren(inputElement);

+	}

+

+	@Override

+	protected AbstractGroupProvider getNewContentProviderInstance(IProject project) {

+		return new RaGroupContentProvider((Connector)getCachedModelProvider(project).getModelObject(), project);

+	}

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorLabelProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorLabelProvider.java
new file mode 100644
index 0000000..0397c66
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorLabelProvider.java
@@ -0,0 +1,54 @@
+package org.eclipse.jst.jee.ui.internal.navigator;

+

+import org.eclipse.jst.j2ee.navigator.internal.J2EELabelProvider;

+import org.eclipse.jst.javaee.jca.ConfigProperty;

+import org.eclipse.jst.javaee.jca.ConnectionDefinition;

+import org.eclipse.jst.javaee.jca.RequiredConfigProperty;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;

+import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;

+import org.eclipse.swt.graphics.Image;

+

+public class ConnectorLabelProvider extends J2EELabelProvider {

+

+	private Image CONFIG_PROP_IMAGE;

+	private Image LICENSE_IMAGE;

+

+	@Override

+	public String getText(Object element) {

+		if (AbstractGroupProvider.class.isInstance(element)){

+			return ((AbstractGroupProvider) element).getText();

+		} else if (element instanceof org.eclipse.jst.javaee.jca.License){

+			return Messages.ConnectorLabelProvider_LICENSE_ARTIFACT;

+		}  else if (element instanceof ConfigProperty){

+			return Messages.ConnectorLabelProvider_CONFIG_PROPERTY + ((ConfigProperty)element).getConfigPropertyName() != null ? ((ConfigProperty)element).getConfigPropertyName() : ""; //$NON-NLS-1$

+		}  else if (element instanceof RequiredConfigProperty){

+			return Messages.ConnectorLabelProvider_RequiredConfigProperty + ((RequiredConfigProperty)element).getConfigPropertyName() != null ? ((RequiredConfigProperty)element).getConfigPropertyName() : ""; //$NON-NLS-1$

+		}  else if (element instanceof ConnectionDefinition){

+			return Messages.ConnectorLabelProvider_ConnectionDefinition + ((ConnectionDefinition)element).getManagedconnectionfactoryClass() != null ?((ConnectionDefinition)element).getManagedconnectionfactoryClass() : ""; //$NON-NLS-1$

+		}

+		

+		return super.getText(element);

+	}

+

+	@Override

+	public Image getImage(Object element) {

+		if (AbstractGroupProvider.class.isInstance(element)){

+			return ((AbstractGroupProvider) element).getImage();

+		}  else if (element instanceof ConfigProperty){

+			if (CONFIG_PROP_IMAGE == null) {

+				CONFIG_PROP_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_CONFIG_PROP);

+			}

+			return CONFIG_PROP_IMAGE;		

+		} else if (element instanceof org.eclipse.jst.javaee.jca.License){

+			if (LICENSE_IMAGE == null) {

+				LICENSE_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_LICENSE);

+			}

+			return LICENSE_IMAGE;		

+		}

+		return super.getImage(element);

+	}

+

+	

+	

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
index bd5a95a..500b03a 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
@@ -111,9 +111,11 @@
 				try {
 					facetedProject = ProjectFacetsManager.create(project);
 					if (facetedProject != null && 
-							facetedProject.hasProjectFacet(
+							(facetedProject.hasProjectFacet(
 									ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
-											J2EEVersionConstants.VERSION_5_0_TEXT))) {
+											J2EEVersionConstants.VERSION_5_0_TEXT)) || facetedProject.hasProjectFacet(
+													ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
+															J2EEVersionConstants.VERSION_6_0_TEXT)))) {
 						GroupEARProvider element = (GroupEARProvider) getCachedContentProvider(project);
 						children.add(element);
 					}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
index bd895fc..cad1169 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
@@ -76,9 +76,11 @@
 			IFacetedProject facetedProject = ProjectFacetsManager.create(project);
 			//EE6TODO
 			if (facetedProject != null && 
-					facetedProject.hasProjectFacet(
+					(facetedProject.hasProjectFacet(
 							ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
-									J2EEVersionConstants.VERSION_5_0_TEXT))) {
+									J2EEVersionConstants.VERSION_5_0_TEXT)) || facetedProject.hasProjectFacet(
+											ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
+													J2EEVersionConstants.VERSION_6_0_TEXT)))) {
 
 				if(bundledLibsNode == null){
 					BundledNode bundledLibsDirectoryNode = new BundledNode(project, Messages.LIBRARY_DIRECTORY + ": /" + EAR_DEFAULT_LIB, null);//$NON-NLS-1$
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AbstractConnectorGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AbstractConnectorGroupProvider.java
new file mode 100644
index 0000000..f2e1add
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AbstractConnectorGroupProvider.java
@@ -0,0 +1,12 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;

+

+public abstract class AbstractConnectorGroupProvider extends AbstractGroupProvider {

+

+	public AbstractConnectorGroupProvider(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/ActicationSpecNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/ActicationSpecNode.java
new file mode 100644
index 0000000..b8b6c87
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/ActicationSpecNode.java
@@ -0,0 +1,39 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.ActivationSpec;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.swt.graphics.Image;

+

+public class ActicationSpecNode extends AbstractConnectorGroupProvider {

+

+	public ActicationSpecNode(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+	@Override

+	public String getText() {

+		return Messages.ActicationSpecNode_ActivationSpec + (((ActivationSpec)javaee).getActivationspecClass() != null ? ((ActivationSpec)javaee).getActivationspecClass() :"");  //$NON-NLS-1$

+	}

+

+	@Override

+	public boolean hasChildren() {

+		return ((ActivationSpec)javaee).getRequiredConfigProperty() != null && ((ActivationSpec)javaee).getRequiredConfigProperty().size() > 0;

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		children.addAll(((ActivationSpec)javaee).getRequiredConfigProperty());

+		return children;

+	}

+

+	@Override

+	public Image getImage() {

+		return null;

+	}

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AdminObjectNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AdminObjectNode.java
new file mode 100644
index 0000000..24d6e29
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AdminObjectNode.java
@@ -0,0 +1,43 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.AdminObject;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.swt.graphics.Image;

+

+public class AdminObjectNode extends AbstractConnectorGroupProvider {

+

+	public AdminObjectNode(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+//		children.addAll(((AdminObject)javaee).getConfigProperty());

+		return children;

+	}

+	

+	

+

+	@Override

+	public boolean hasChildren() {

+		return false;

+	}

+

+	@Override

+	public Image getImage() {

+		return null;

+	}

+

+	@Override

+	public String getText() {

+		return Messages.ConnectorLabelProvider_ADMIN_OBJECT + (((AdminObject)javaee).getAdminobjectInterface() != null ? ((AdminObject)javaee).getAdminobjectInterface() :""); //$NON-NLS-1$

+	}

+	

+	

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/GroupRaContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/GroupRaContentProvider.java
new file mode 100644
index 0000000..b5ee3aa
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/GroupRaContentProvider.java
@@ -0,0 +1,66 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.Connector;

+import org.eclipse.jst.javaee.jca.ResourceAdapter;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;

+import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;

+import org.eclipse.swt.graphics.Image;

+

+public class GroupRaContentProvider extends AbstractConnectorGroupProvider {

+

+

+	private Image RA_IMAGE;

+

+	public GroupRaContentProvider(JavaEEObject javaee1) {

+		super(javaee1);

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		Connector connector = (Connector) javaee;

+		ResourceAdapter ra = connector.getResourceadapter();

+		if (ra == null){

+			return children;

+		}

+		if (ra.getAdminobject() != null){

+			for (Object object : ra.getAdminobject() ) {

+				children.add(new AdminObjectNode((JavaEEObject) object));				

+			}

+		}

+		if (ra.getConfigProperty() != null){

+			children.addAll(ra.getConfigProperty());

+		}

+		

+		if (ra.getSecurityPermission() != null){

+			children.addAll(ra.getSecurityPermission());

+		}

+		if (ra.getInboundResourceadapter() != null){

+			children.add(new InboundRaNode(ra.getInboundResourceadapter()));

+		}

+		if (ra.getOutboundResourceadapter()!= null){

+			children.add(new OutboundRaNode(ra.getOutboundResourceadapter()));

+			

+		}

+		return children;

+	}

+

+	@Override

+	public Image getImage() {

+		if (RA_IMAGE == null) {

+			RA_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_RESOURCE_ADAPTER);

+		}

+		return RA_IMAGE;

+	}

+

+	@Override

+	public String getText() {

+		return Messages.GroupRaContentProvider_RESOURCE_ADAPTER;

+	}

+	

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/InboundRaNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/InboundRaNode.java
new file mode 100644
index 0000000..7007967
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/InboundRaNode.java
@@ -0,0 +1,41 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.InboundResourceAdapter;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.swt.graphics.Image;

+

+public class InboundRaNode extends AbstractConnectorGroupProvider {

+

+	public InboundRaNode(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		children.add(new MessageAdapterNode(((InboundResourceAdapter)javaee).getMessageadapter()));

+		return children;

+	}

+

+	@Override

+	public Image getImage() {

+		return null;

+	}

+

+	@Override

+	public String getText() {

+		return Messages.InboundRaNode_Inbound_Resource_adapter;

+	}

+

+	@Override

+	public boolean hasChildren() {

+		return ((InboundResourceAdapter)javaee).getMessageadapter() != null;

+	}

+	

+	

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageAdapterNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageAdapterNode.java
new file mode 100644
index 0000000..9398db4
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageAdapterNode.java
@@ -0,0 +1,46 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.MessageAdapter;

+import org.eclipse.jst.javaee.jca.MessageListener;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.swt.graphics.Image;

+

+public class MessageAdapterNode extends AbstractConnectorGroupProvider {

+

+	public MessageAdapterNode(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		List<MessageListener> messagelistener = ((MessageAdapter)javaee).getMessagelistener();

+		for (MessageListener messageListener2 : messagelistener) {

+			children.add(new MessageListenerNode(messageListener2));	

+		}

+		return children;

+	}

+

+	@Override

+	public Image getImage() {

+		return null;

+	}

+

+	@Override

+	public String getText() {

+		return Messages.MessageAdapterNode_MESSAGE_ADAPTER;

+	}

+

+	@Override

+	public boolean hasChildren() {

+		List<MessageListener> messagelistener = ((MessageAdapter)javaee).getMessagelistener();

+		return messagelistener != null && messagelistener.size()>0;

+	}

+	

+	

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageListenerNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageListenerNode.java
new file mode 100644
index 0000000..dc6b2ec
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageListenerNode.java
@@ -0,0 +1,43 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.MessageListener;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.swt.graphics.Image;

+

+public class MessageListenerNode extends AbstractConnectorGroupProvider {

+

+	public MessageListenerNode(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		children.add(new ActicationSpecNode(((MessageListener)javaee).getActivationspec()));

+		return children;

+	}

+	

+	

+

+	@Override

+	public boolean hasChildren() {

+		return ((MessageListener)javaee).getActivationspec() != null;

+	}

+

+	@Override

+	public Image getImage() {

+		return null;

+	}

+

+	@Override

+	public String getText() {

+		return Messages.MessageListenerNode_MessageListener + (((MessageListener)javaee).getMessagelistenerType() != null ? ((MessageListener)javaee).getMessagelistenerType() :"");  //$NON-NLS-1$

+	}

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/OutboundRaNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/OutboundRaNode.java
new file mode 100644
index 0000000..e65d4db
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/OutboundRaNode.java
@@ -0,0 +1,40 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.OutboundResourceAdapter;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.swt.graphics.Image;

+

+public class OutboundRaNode extends AbstractConnectorGroupProvider {

+

+	public OutboundRaNode(JavaEEObject javaee) {

+		super(javaee);

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		children.addAll(((OutboundResourceAdapter)javaee).getConnectionDefinition());

+		return children;

+	}

+	@Override

+	public Image getImage() {

+		return null;

+	}

+

+	@Override

+	public boolean hasChildren() {

+		return ((OutboundResourceAdapter)javaee).getConnectionDefinition() != null && ((OutboundResourceAdapter)javaee).getConnectionDefinition().size() >0;

+	}

+

+	@Override

+	public String getText() {

+		return Messages.OutboundRaNode_OutboundResourceAdapter;

+	}

+

+	

+	

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
new file mode 100644
index 0000000..56172ad
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
@@ -0,0 +1,49 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.core.resources.IProject;

+import org.eclipse.jst.javaee.core.JavaEEObject;

+import org.eclipse.jst.javaee.jca.Connector;

+import org.eclipse.jst.jee.ui.internal.Messages;

+import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;

+import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.swt.graphics.Image;

+

+public class RaGroupContentProvider extends AbstractConnectorGroupProvider {

+

+	private IProject project;

+	private Image CONNECTOR_IMAGE;

+

+	public RaGroupContentProvider(JavaEEObject javaee, IProject project) {

+		super(javaee);

+		this.project = project;

+	}

+

+	@Override

+	public List getChildren() {

+		List children = new ArrayList();

+		children.add(new GroupRaContentProvider(javaee));

+		if(((Connector)javaee).getLicense() != null){

+			children.add(((Connector)javaee).getLicense());

+		}

+		return children;

+	}

+

+	@Override

+	public Image getImage() {

+		if (CONNECTOR_IMAGE == null) {

+			CONNECTOR_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_CONNECTOR);

+		}

+		return CONNECTOR_IMAGE;

+	}

+	

+	

+	@Override

+	public String getText() {

+		return NLS.bind(Messages.DEPLOYMENT_DESCRIPTOR, project.getName());

+	}

+

+}

diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java
index ff3f571..91d30e2 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java
@@ -12,15 +12,15 @@
 
 import java.net.URL;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
-import org.eclipse.core.runtime.Platform;
-import java.lang.Throwable;
-import org.eclipse.core.runtime.CoreException;
 
 /**
  * The activator class controls the plug-in life cycle
@@ -145,4 +145,8 @@
 	public static void logError(CoreException exception) {
 		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( exception.getStatus() );
 	}
+	
+	public Image getImage(String key){
+		return getImageDescriptor(key).createImage();
+	}
 }
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
index 6b9e958..3789a2b 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
@@ -11,10 +11,16 @@
 package org.eclipse.jst.jee.ui.plugin;
 
 
+
 public class JEEUIPluginIcons {
 
 	public static String IMG_EJBEEMODEL = "30_ejbjar_obj"; //$NON-NLS-1$
 	public static String IMG_WEBEEMODEL = "webapp_25"; //$NON-NLS-1$
+	public static String IMG_CONNECTOR = "connection"; //$NON-NLS-1$
+	public static String IMG_CONFIG_PROP = "config_prop_obj"; //$NON-NLS-1$
+	public static String IMG_LICENSE = "license_obj"; //$NON-NLS-1$
+	public static String IMG_RESOURCE_ADAPTER = "resource_adapter_obj"; //$NON-NLS-1$
+	
 	public static String SERVLET_MAPPING = "webuiIcons/servlet_mapping"; //$NON-NLS-1$
 	public static String FILTER_MAPPING = "webuiIcons/filter"; //$NON-NLS-1$
 	public static String GROUP_FILTER_MAPPING = "webuiIcons/filter_mapping"; //$NON-NLS-1$