You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2003/08/13 06:15:43 UTC

cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan CreateMBeanInstance.java

dain        2003/08/12 21:15:43

  Modified:    modules/core/src/java/org/apache/geronimo/deployment/plan
                        CreateMBeanInstance.java
  Log:
  Added code to automatically create relationship if one is not created but the relationship type is registered.
  
  Revision  Changes    Path
  1.3       +42 -5     incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan/CreateMBeanInstance.java
  
  Index: CreateMBeanInstance.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/plan/CreateMBeanInstance.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CreateMBeanInstance.java	11 Aug 2003 19:46:28 -0000	1.2
  +++ CreateMBeanInstance.java	13 Aug 2003 04:15:43 -0000	1.3
  @@ -62,6 +62,7 @@
   import java.util.List;
   import java.util.Map;
   import java.util.Set;
  +import java.util.Collections;
   import javax.management.Attribute;
   import javax.management.AttributeList;
   import javax.management.InstanceAlreadyExistsException;
  @@ -77,6 +78,8 @@
   import javax.management.ReflectionException;
   import javax.management.relation.RelationServiceMBean;
   import javax.management.relation.Role;
  +import javax.management.relation.RoleList;
  +import javax.management.relation.RoleInfo;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -165,10 +168,44 @@
               try {
                   for (Iterator i = relationships.iterator(); i.hasNext();) {
                       MBeanRelationship relationship = (MBeanRelationship) i.next();
  -                    List members = relationService.getRole(relationship.getName(), relationship.getRole());
  -                    members.add(actualName);
  -                    relationService.setRole(relationship.getName(), new Role(relationship.getRole(), members));
  +
  +                    // if we don't have a relationship instance create one
  +                    String relationshipName = relationship.getName();
  +                    String relationshipRole = relationship.getRole();
  +                    if (!relationService.hasRelation(relationshipName).booleanValue()) {
  +                        // if  we don't have a relationship of the
  +                        String relationshipType = relationship.getType();
  +                        if (!relationService.getAllRelationTypeNames().contains(relationshipType)) {
  +                            throw new DeploymentException("Relationship type is not registered: relationType=" + relationshipType);
  +                        }
  +
  +                        RoleList roleList = new RoleList();
  +                        roleList.add(new Role(relationshipRole, Collections.singletonList(actualName)));
  +
  +                        // if we have a target we need to add it to the role list
  +                        String target = relationship.getTarget();
  +                        if (target != null && target.length() > 0) {
  +                            List roles = relationService.getRoleInfos(relationshipType);
  +
  +                            String targetRoleName;
  +                            if (((RoleInfo) roles.get(0)).getName().equals(relationshipRole)) {
  +                                targetRoleName = ((RoleInfo) roles.get(1)).getName();
  +                            } else {
  +                                targetRoleName = ((RoleInfo) roles.get(0)).getName();
  +                            }
  +                            roleList.add(new Role(targetRoleName, Collections.singletonList(new ObjectName(target))));
  +                        }
  +                        relationService.createRelation(relationshipName, relationshipType, roleList);
  +
  +                    } else {
  +                        // We have an exiting relationship -- just add to the existing role
  +                        List members = relationService.getRole(relationshipName, relationshipRole);
  +                        members.add(actualName);
  +                        relationService.setRole(relationshipName, new Role(relationshipRole, members));
  +                    }
                   }
  +            } catch (DeploymentException e) {
  +                throw e;
               } catch (Exception e) {
                   throw new DeploymentException(e);
               }
  @@ -245,7 +282,7 @@
                   String[] argTypes = (String[]) operation.getTypes().toArray(new String[argCount]);
                   List values = operation.getArgs();
                   Object[] args = new Object[argCount];
  -                for (int j=0; j < argCount; j++) {
  +                for (int j = 0; j < argCount; j++) {
                       Object value = values.get(j);
                       if (value instanceof String) {
                           value = getValue(newCL, argTypes[j], (String) value);