javax.management.relation
public class: RelationTypeSupport [javadoc |
source]
java.lang.Object
javax.management.relation.RelationTypeSupport
All Implemented Interfaces:
RelationType
A RelationTypeSupport object implements the RelationType interface.
It represents a relation type, providing role information for each role
expected to be supported in every relation of that type.
A relation type includes a relation type name and a list of
role infos (represented by RoleInfo objects).
A relation type has to be declared in the Relation Service:
- either using the createRelationType() method, where a RelationTypeSupport
object will be created and kept in the Relation Service
- either using the addRelationType() method where the user has to create
an object implementing the RelationType interface, and this object will be
used as representing a relation type in the Relation Service.
The serialVersionUID of this class is 4611072955724144607L
.
Constructor: |
protected RelationTypeSupport(String relationTypeName) {
if (relationTypeName == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"RelationTypeSupport", relationTypeName);
typeName = relationTypeName;
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"RelationTypeSupport");
return;
}
Constructor to be used for subclasses. Parameters:
relationTypeName - Name of relation type.
Throws:
IllegalArgumentException - if null parameter.
- exception:
IllegalArgumentException - if null parameter.
|
public RelationTypeSupport(String relationTypeName,
RoleInfo[] roleInfoArray) throws IllegalArgumentException, InvalidRelationTypeException {
if (relationTypeName == null || roleInfoArray == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"RelationTypeSupport", relationTypeName);
// Can throw InvalidRelationTypeException, ClassNotFoundException
// and NotCompliantMBeanException
initMembers(relationTypeName, roleInfoArray);
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"RelationTypeSupport");
return;
}
Constructor where all role definitions are dynamically created and
passed as parameter. Parameters:
relationTypeName - Name of relation type
roleInfoArray - List of role definitions (RoleInfo objects)
Throws:
IllegalArgumentException - if null parameter
InvalidRelationTypeException - if:
- the same name has been used for two different roles
- no role info provided
- one null role info provided
- exception:
IllegalArgumentException - if null parameter
- exception:
InvalidRelationTypeException - if:
- the same name has been used for two different roles
- no role info provided
- one null role info provided
|
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from javax.management.relation.RelationTypeSupport Detail: |
protected void addRoleInfo(RoleInfo roleInfo) throws IllegalArgumentException, InvalidRelationTypeException {
if (roleInfo == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"addRoleInfo", roleInfo);
if (isInRelationService) {
// Trying to update a declared relation type
String excMsg = "Relation type cannot be updated as it is declared in the Relation Service.";
throw new RuntimeException(excMsg);
}
String roleName = roleInfo.getName();
// Checks if the role info has already been described
if (roleName2InfoMap.containsKey(roleName)) {
StringBuilder excMsgStrB = new StringBuilder();
String excMsg = "Two role infos provided for role ";
excMsgStrB.append(excMsg);
excMsgStrB.append(roleName);
throw new InvalidRelationTypeException(excMsgStrB.toString());
}
roleName2InfoMap.put(roleName, new RoleInfo(roleInfo));
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"addRoleInfo");
return;
}
Add a role info.
This method of course should not be used after the creation of the
relation type, because updating it would invalidate that the relations
created associated to that type still conform to it.
Can throw a RuntimeException if trying to update a relation type
declared in the Relation Service. |
static void checkRoleInfos(RoleInfo[] roleInfoArray) throws IllegalArgumentException, InvalidRelationTypeException {
if (roleInfoArray == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
if (roleInfoArray.length == 0) {
// No role info provided
String excMsg = "No role info provided.";
throw new InvalidRelationTypeException(excMsg);
}
Set< String > roleNames = new HashSet< String >();
for (int i = 0; i < roleInfoArray.length; i++) {
RoleInfo currRoleInfo = roleInfoArray[i];
if (currRoleInfo == null) {
String excMsg = "Null role info provided.";
throw new InvalidRelationTypeException(excMsg);
}
String roleName = currRoleInfo.getName();
// Checks if the role info has already been described
if (roleNames.contains(roleName)) {
StringBuilder excMsgStrB = new StringBuilder();
String excMsg = "Two role infos provided for role ";
excMsgStrB.append(excMsg);
excMsgStrB.append(roleName);
throw new InvalidRelationTypeException(excMsgStrB.toString());
}
roleNames.add(roleName);
}
return;
}
|
public String getRelationTypeName() {
return typeName;
}
Returns the relation type name. |
public RoleInfo getRoleInfo(String roleInfoName) throws IllegalArgumentException, RoleInfoNotFoundException {
if (roleInfoName == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"getRoleInfo", roleInfoName);
// No null RoleInfo allowed, so use get()
RoleInfo result = roleName2InfoMap.get(roleInfoName);
if (result == null) {
StringBuilder excMsgStrB = new StringBuilder();
String excMsg = "No role info for role ";
excMsgStrB.append(excMsg);
excMsgStrB.append(roleInfoName);
throw new RoleInfoNotFoundException(excMsgStrB.toString());
}
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"getRoleInfo");
return result;
}
Returns the role info (RoleInfo object) for the given role info name
(null if not found). |
public List<RoleInfo> getRoleInfos() {
return new ArrayList< RoleInfo >(roleName2InfoMap.values());
}
Returns the list of role definitions (ArrayList of RoleInfo objects). |
void setRelationServiceFlag(boolean flag) {
isInRelationService = flag;
return;
}
|