Received: from rcsinet15.oracle.com (/148.87.113.117) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 03 Jun 2010 02:25:22 -0700 Received: from sca-ea-mail-1.sun.com (sca-ea-mail-1.Sun.COM [192.18.43.24]) by rcsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o539PLr7030889 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Thu, 3 Jun 2010 09:25:22 GMT Received: from dm-beehive-02.central.sun.com ([129.147.62.241]) by sca-ea-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id o539PLaU008241 for ; Thu, 3 Jun 2010 09:25:21 GMT Received: from dm-sfbay-02.sfbay.sun.com (dm-sfbay-02.SFBay.Sun.COM [129.146.11.31]) by dm-beehive-02.central.sun.com (8.13.8+Sun/8.13.8/REDIRECT) with ESMTP id o539PKHY036077 for ; Thu, 3 Jun 2010 03:25:20 -0600 (MDT) Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234]) by dm-sfbay-02.sfbay.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.4) with ESMTP id o539PKkC019320 for ; Thu, 3 Jun 2010 02:25:20 -0700 (PDT) Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6]) by sunmail2sca.sfbay.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.4) with ESMTP id o539PKXE000135 for <@sunmail2sca.sfbay.sun.com:byron.nevins@sun.com>; Thu, 3 Jun 2010 02:25:20 -0700 (PDT) Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by nwk-avmta-2.sfbay.sun.com (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005)) id <0L3F00E05M68CP00@nwk-avmta-2.sfbay.sun.com> for byron.nevins@sun.com (ORCPT byron.nevins@sun.com); Thu, 03 Jun 2010 02:25:20 -0700 (PDT) Received: from brmea-mail-2.sun.com ([192.18.98.43]) by nwk-avmta-2.sfbay.sun.com (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005)) with ESMTP id <0L3F00D49M677910@nwk-avmta-2.sfbay.sun.com> for byron.nevins@sun.com (ORCPT byron.nevins@sun.com); Thu, 03 Jun 2010 02:25:19 -0700 (PDT) Received: from relay41i.sun.com ([192.5.209.70]) by brmea-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id o539PIuv017486 for ; Thu, 03 Jun 2010 09:25:18 +0000 (GMT) Received: from mmp42es.mmp.us.syntegra.com ([160.41.221.11] [160.41.221.11]) by relay41i.sun.com with ESMTP id BT-MMP-308921 for byron.nevins@sun.com; Thu, 03 Jun 2010 09:23:18 +0000 (Z) Received: from relay43i.sun.com (relay43i.sun.com [192.5.209.74]) by mmp42es.mmp.us.syntegra.com with ESMTP id BT-MMP-188691037 for byron.nevins@sun.com; Thu, 03 Jun 2010 09:23:17 +0000 (Z) Received: from dev.java.net ([208.87.9.178] [208.87.9.178]) by relay4i.sun.com id BT-MMP-2108592 for byron.nevins@sun.com; Thu, 03 Jun 2010 09:23:17 +0000 (Z) Received: (qmail 5044 invoked by uid 5000); Thu, 03 Jun 2010 09:23:16 +0000 Received: (qmail 5031 invoked by uid 5000); Thu, 03 Jun 2010 09:23:15 +0000 Date: Thu, 03 Jun 2010 09:23:15 +0000 From: bnevins@dev.java.net Subject: svn commit: r37418 - trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans Sender: commits-return-19960-byron.nevins=sun.com@glassfish-svn.dev.java.net To: commits@glassfish-svn.dev.java.net Reply-to: commits@glassfish-svn.dev.java.net Message-id: <20100603092315.5027.qmail@dev.java.net> MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7BIT Precedence: bulk Delivered-to: mailing list commits@glassfish-svn.dev.java.net X-PMX-Version: 5.4.1.325704 X-Brightmail-Tracker: AAAAAA== X-Antispam: No, score=0.0/5.0, scanned in 0.242sec at (localhost [127.0.0.1]) by smf-spamd v1.3.1 - http://smfs.sf.net/ Mailing-List: contact commits-help@glassfish-svn.dev.java.net; run by ezmlm List-Post: List-Unsubscribe: List-Help: X-No-Archive: yes X-Source-IP: sca-ea-mail-1.Sun.COM [192.18.43.24] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090201.4C077502.0163,ss=1,fgs=0 Author: bnevins Date: 2010-06-03 09:23:13+0000 New Revision: 37418 Modified: trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java (contents, props changed) trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java Log: * Added some helper methods to Domain. These methods deal with ReferenceContainer's which are clusters and servers. E.g. you can get a list of all ReferenceContainers. This will help cut down on the ugly boiler-plate code for determining what a target is. * ReferenceContainers now implement 4 boolean methods that will tell you if it is a Cluster, Server, Instance, DAS -- These methods can be used to help cast ReferenceContainer to Cluster or Server safely. They can also be used to differentiate between DAS and instance. Modified: trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java Url: https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java?view=diff&rev=37418&p1=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java&p2=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java&r1=37417&r2=37418 ============================================================================== --- trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java (original) +++ trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Cluster.java 2010-06-03 09:23:13+0000 @@ -226,8 +226,30 @@ @DuckTyped List getInstances(); + // four trivial methods that ReferenceContainer's need to implement + @DuckTyped + @Override + boolean isCluster(); + + @DuckTyped + @Override + boolean isServer(); + + @DuckTyped + @Override + boolean isDas(); + + @DuckTyped + @Override + boolean isInstance(); + class Duck { - public static String getReference(Cluster cluster) { + public static boolean isCluster(Server server) { return true; } + public static boolean isServer(Server server) { return false; } + public static boolean isInstance(Server server) { return false; } + public static boolean isDas(Server server) { return false; } + + public static String getReference(Cluster cluster) { return cluster.getConfigRef(); } Modified: trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java Url: https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java?view=diff&rev=37418&p1=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java&p2=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java&r1=37417&r2=37418 ============================================================================== --- trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java (original) +++ trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Config.java 2010-06-03 09:23:13+0000 @@ -45,8 +45,6 @@ import com.sun.common.util.logging.LoggingConfigImpl; import com.sun.grizzly.config.dom.NetworkConfig; -import org.glassfish.config.support.Delete; -import org.glassfish.config.support.TypeAndNameResolver; import org.jvnet.hk2.config.types.Property; import org.jvnet.hk2.config.types.PropertyBag; import org.glassfish.api.admin.config.Container; Modified: trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java Url: https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java?view=diff&rev=37418&p1=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java&p2=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java&r1=37417&r2=37418 ============================================================================== --- trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java (original) +++ trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Domain.java 2010-06-03 09:23:13+0000 @@ -36,6 +36,7 @@ package com.sun.enterprise.config.serverbeans; +import org.glassfish.api.admin.config.ReferenceContainer; import org.jvnet.hk2.config.types.PropertyBag; import org.glassfish.api.admin.config.ApplicationName; import org.glassfish.api.admin.config.PropertiesDesc; @@ -48,6 +49,7 @@ import org.jvnet.hk2.config.Configured; import org.jvnet.hk2.config.DuckTyped; import org.jvnet.hk2.config.Element; +import com.sun.enterprise.util.StringUtils; import java.beans.PropertyVetoException; import java.util.*; @@ -393,6 +395,15 @@ @DuckTyped Cluster getClusterNamed(String name); + @DuckTyped + ReferenceContainer getReferenceContainerNamed(String name); + + @DuckTyped + List getAllReferenceContainers(); + + @DuckTyped + List getReferenceContainersOf(Config config); + class Duck { public static List getAllDefinedSystemApplications(Domain me) { List allSysApps = new ArrayList(); @@ -505,5 +516,44 @@ } return null; } + + public static ReferenceContainer getReferenceContainerNamed(Domain d, String name) { + // Clusters and Servers are ReferenceContainers + Cluster c = getClusterNamed(d, name); + + if(c != null) + return c; + + return getServerNamed(d, name); + } + + public static List getReferenceContainersOf(Domain d, Config config) { + // Clusters and Servers are ReferenceContainers + List sub = new LinkedList(); + + // both the config and its name need to be sanity-checked + String name = null; + + if(config != null) + name = config.getName(); + + if(!StringUtils.ok(name)) // we choose to make this not an error + return sub; + + List all = getAllReferenceContainers(d); + + for(ReferenceContainer rc : all) { + if(name.equals(rc.getReference())) + sub.add(rc); + } + return sub; + } + + public static List getAllReferenceContainers(Domain d) { + List ReferenceContainers = new LinkedList(); + ReferenceContainers.addAll(d.getServers().getServer()); + ReferenceContainers.addAll(d.getClusters().getCluster()); + return ReferenceContainers; + } } } Modified: trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java Url: https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java?view=diff&rev=37418&p1=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java&p2=trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java&r1=37417&r2=37418 ============================================================================== --- trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java (original) +++ trunk/v3/admin/config-api/src/main/java/com/sun/enterprise/config/serverbeans/Server.java 2010-06-03 09:23:13+0000 @@ -210,8 +210,32 @@ @DuckTyped Cluster getCluster(); + // four trivial methods that ReferenceContainer's need to implement + @DuckTyped + @Override + boolean isCluster(); + + @DuckTyped + @Override + boolean isServer(); + + @DuckTyped + @Override + boolean isDas(); + + @DuckTyped + @Override + boolean isInstance(); class Duck { + public static boolean isCluster(Server server) { return false; } + public static boolean isServer(Server server) { return true; } + public static boolean isInstance(Server server) { return !isDas(server); } + public static boolean isDas(Server server) { + String name = server.getName(); + // todo find the constant somewhere for "server"! + return name != null && name.equals("server"); + } public static Cluster getCluster(Server server) { Dom serverDom = Dom.unwrap(server); @@ -430,6 +454,9 @@ @Inject Configs configs; + @Inject + private Domain domain; + @Override public void decorate(AdminCommandContext context, Servers parent, final Server child) throws PropertyVetoException, TransactionFailure { Logger logger = LogDomains.getLogger(Server.class, LogDomains.ADMIN_LOGGER); @@ -440,6 +467,11 @@ if (isStandAlone) { // remove config -config String instanceConfig = child.getConfigRef(); final Config config = configs.getConfigByName(instanceConfig); + + // bnevins June 2010 + // don't delete the config is someone else holds a reference to it! + if(config != null && domain.getReferenceContainersOf(config).size() > 1) + return; try { ConfigSupport.apply(new SingleConfigCode() { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@glassfish-svn.dev.java.net For additional commands, e-mail: commits-help@glassfish-svn.dev.java.net