org.argouml.pattern.cognitive.critics
Class CrSingletonViolatedMissingStaticAttr

java.lang.Object
  |
  +--org.argouml.cognitive.critics.Critic
        |
        +--org.argouml.uml.cognitive.critics.CrUML
              |
              +--org.argouml.pattern.cognitive.critics.CrSingletonViolatedMissingStaticAttr
All Implemented Interfaces:
Poster, java.io.Serializable

public class CrSingletonViolatedMissingStaticAttr
extends CrUML

A critic to detect whether a class violates the conditions required for using a Singleton Stereotype.

This stereotype is used to indicate a class which only ever has a single instance. The critic will trigger whenever a class has stereotype «Singleton» (or «singleton»), but does not meet the requirements of a Singleton class. These are:

  1. An static variable to hold the sole instance of the class; (This critic)
  2. only private constructors to create the sole instance; and
  3. At least one constructor to override the default constructor.

This version includes an implementation for the first test above!

See Also:
ArgoUML User Manual: Singleton Violated , Serialized Form

Field Summary
 
Fields inherited from class org.argouml.uml.cognitive.critics.CrUML
cat, decBEHAVIOR, decCLASS_SELECTION, decCODE_GEN, decCONTAINMENT, decEXPECTED_USAGE, decINHERITANCE, decINSTANCIATION, decMETHODS, decMODULARITY, decNAMING, decPATTERNS, decPLANNED_EXTENSIONS, decRELATIONSHIPS, decSTATE_MACHINES, decSTEREOTYPES, decSTORAGE
 
Fields inherited from class org.argouml.cognitive.critics.Critic
_clarifier, _knowledgeTypes, _numCriticsFired, _supportedDecisions, _supportedGoals, _triggerMask, DEFAULT_CLARIFIER, ENABLED, KT_COMPLETENESS, KT_CONSISTENCY, KT_CORRECTNESS, KT_DESIGNERS, KT_EXPERIENCIAL, KT_OPTIMIZATION, KT_ORGANIZATIONAL, KT_PRESENTATION, KT_SEMANTICS, KT_SYNTAX, KT_TOOL, NO_PROBLEM, PROBLEM_FOUND, RESOURCE_BUNDLE, SNOOZE_ORDER
 
Constructor Summary
CrSingletonViolatedMissingStaticAttr()
          Constructor for the critic.
 
Method Summary
 boolean predicate2(java.lang.Object dm, Designer dsgr)
          The trigger for the critic.
 
Methods inherited from class org.argouml.uml.cognitive.critics.CrUML
expand, predicate, setHeadline, setResource
 
Methods inherited from class org.argouml.cognitive.critics.Critic
addControlRec, addKnowledgeType, addSupportedDecision, addSupportedGoal, addTrigger, beActive, beInactive, canFixIt, containsKnowledgeType, critique, defaultMoreInfoURL, fixIt, getArg, getArgs, getClarifier, getControlRec, getCriticCategory, getCriticKey, getCriticName, getCriticType, getDecisionCategory, getDescription, getDescriptionTemplate, getExpertEmail, getHeadline, getHeadline, getMoreInfoURL, getMoreInfoURL, getPriority, getPriority, getSupportedDecisions, getSupportedGoals, getTriggerMask, getWizardClass, initWizard, isActive, isEnabled, isRelevantToDecisions, isRelevantToGoals, makeWizard, matchReason, postItem, reasonCodeFor, setArg, setArgs, setDecisionCategory, setDescription, setEnabled, setExpertEmail, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setMoreInfoURL, setPriority, snooze, snoozeOrder, stillValid, supports, supports, toDoItem, toString, unsnooze
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CrSingletonViolatedMissingStaticAttr

public CrSingletonViolatedMissingStaticAttr()
Constructor for the critic. Sets up the resource name, which will allow headline and description to be found for the current locale. Provides a design issue category (PATTERNS), sets a priority for any to-do items (LOW) and adds triggers for metaclasses "stereotype", "structuralFeature" and "associationEnd".

Method Detail

predicate2

public boolean predicate2(java.lang.Object dm,
                          Designer dsgr)
The trigger for the critic.

First check we are actually stereotyped "Singleton" (or we will accept "singleton").

Then check for a static attribute with the same type as the Singleton class that will hold the instance of the Singleton class when its created.

Overrides:
predicate2 in class CrUML
Parameters:
dm - the Object to be checked against the critic.
dsgr - the Designer creating the model. Not used, this is for future development of ArgoUML.
Returns:
PROBLEM_FOUND if the critic is triggered, otherwise NO_PROBLEM.


ArgoUML © 1996-2003 (20040216)ArgoUML Project HomeArgoUML Cookbook