org.argouml.pattern.cognitive.critics
Class CrSingletonViolatedOnlyPrivateConstructors
java.lang.Object
|
+--org.argouml.cognitive.critics.Critic
|
+--org.argouml.uml.cognitive.critics.CrUML
|
+--org.argouml.pattern.cognitive.critics.CrSingletonViolatedOnlyPrivateConstructors
- All Implemented Interfaces:
- Poster, java.io.Serializable
- public class CrSingletonViolatedOnlyPrivateConstructors
- 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:
- An static variable to hold the sole instance of the class;
- only private constructors to create the sole instance;
(This critic) and
- At least one constructor to override the default constructor.
This version includes an implementation for the second tests above!
- See Also:
-
ArgoUML User Manual: Singleton Violated
,
Serialized Form
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, SNOOZE_ORDER |
Method Summary |
boolean |
predicate2(java.lang.Object dm,
Designer dsgr)
The trigger for the critic. |
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, toString, unsnooze |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
CrSingletonViolatedOnlyPrivateConstructors
public CrSingletonViolatedOnlyPrivateConstructors()
- 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".
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
.