Class JazzStatusConsumer
java.lang.Object
org.apache.maven.scm.util.AbstractConsumer
org.apache.maven.scm.provider.jazz.command.consumer.AbstractRepositoryConsumer
org.apache.maven.scm.provider.jazz.command.status.JazzStatusConsumer
- All Implemented Interfaces:
org.codehaus.plexus.util.cli.StreamConsumer
Consume the output of the scm command for the "status" operation.
It is normally just used to build up a list of ScmFile objects that have
their ScmFileStatus set.
This class has been expanded so that the Workspace, Component and Baseline
are also collected and set back in the JazzScmProviderRepository.
The Workspace and Component names are needed for some other commands (list,
for example), so we can easily get this information here.
As this class has expanded over time, it has become more and more of a state
machine, one that needs to parse the output of the "scm status --wide" command.
If there are any issues with this provider, I would suggest this is a good
place to start.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Pattern
private static final Pattern
private static final Pattern
private static final Pattern
A List of ScmFile objects that have their ScmFileStatus set.private boolean
Implement a simple state machine: Have we seen the "Change sets:" (incoming) line or not?private boolean
Implement a simple state machine: Have we seen the "Change sets:" (outgoing) line or not?static final String
The "Status" command status flag for a resource that has been added.static final String
The "Status" command output line that contains the "Baseline" name.static final String
The "Status" command output line that contains the "Baselines" eye catcher.static final String
The "Status" command status flag for when the content or properties of a file have been modified, or the properties of a directory have changed.static final String
The "Status" command output line that contains the line "Change sets:".static final String
The "Status" command output line that contains the "Component" name.static final String
The "Status" command status flag for a resource that has been deleted.static final String
The "Status" command output line that contains the "Incoming" eye catcher.static final String
The "Status" command status flag for a resource that has been renamed or moved.static final String
The "Status" command output line that contains the "Outgoing" eye catcher.static final String
The "Status" command output line that contains the "Workspace" name.private static final Pattern
Fields inherited from class org.apache.maven.scm.provider.jazz.command.consumer.AbstractRepositoryConsumer
fed
-
Constructor Summary
ConstructorsConstructorDescriptionJazzStatusConsumer
(ScmProviderRepository repo, ScmLogger logger) Constructor for our "scm status" consumer. -
Method Summary
Modifier and TypeMethodDescriptionvoid
consumeLine
(String line) Process one line of output from the execution of the "scm status" command.private boolean
containsBaseline
(String line) private boolean
containsBaselines
(String line) private boolean
containsComponent
(String line) private boolean
containsIncoming
(String line) private boolean
containsOutgoing
(String line) private boolean
containsStatusFlag
(String line) private boolean
containsWorkspace
(String line) private void
extractBaseline
(String line) private void
extractChangedFile
(String line) private Integer
extractChangeSetAlias
(String line) Extract and return an Integer of a change set alias, from both incoming and outgoing changesets.private void
extractComponent
(String line) private void
extractWorkspace
(String line) Methods inherited from class org.apache.maven.scm.provider.jazz.command.consumer.AbstractRepositoryConsumer
getRepository, isFed, setFed, setRepository
Methods inherited from class org.apache.maven.scm.util.AbstractConsumer
getLogger, parseDate, parseDate, setLogger
-
Field Details
-
WORKSPACE_PATTERN
-
COMPONENT_PATTERN1
-
COMPONENT_PATTERN2
-
BASELINE_PATTERN
-
CHANGESET_PATTERN
-
STATUS_CMD_WORKSPACE
The "Status" command output line that contains the "Workspace" name.- See Also:
-
STATUS_CMD_COMPONENT
The "Status" command output line that contains the "Component" name.- See Also:
-
STATUS_CMD_BASELINE
The "Status" command output line that contains the "Baseline" name.- See Also:
-
STATUS_CMD_OUTGOING
The "Status" command output line that contains the "Outgoing" eye catcher.- See Also:
-
STATUS_CMD_INCOMING
The "Status" command output line that contains the "Incoming" eye catcher.- See Also:
-
STATUS_CMD_CHANGE_SETS
The "Status" command output line that contains the line "Change sets:". This will be followed by the change set lines themselves.- See Also:
-
STATUS_CMD_BASELINES
The "Status" command output line that contains the "Baselines" eye catcher.- See Also:
-
STATUS_CMD_ADD_FLAG
The "Status" command status flag for a resource that has been added.- See Also:
-
STATUS_CMD_CHANGE_FLAG
The "Status" command status flag for when the content or properties of a file have been modified, or the properties of a directory have changed.- See Also:
-
STATUS_CMD_DELETE_FLAG
The "Status" command status flag for a resource that has been deleted.- See Also:
-
STATUS_CMD_MOVED_FLAG
The "Status" command status flag for a resource that has been renamed or moved.- See Also:
-
fChangedFiles
A List of ScmFile objects that have their ScmFileStatus set. -
seenOutgoingChangeSets
private boolean seenOutgoingChangeSetsImplement a simple state machine: Have we seen the "Change sets:" (outgoing) line or not? -
seenIncomingChangeSets
private boolean seenIncomingChangeSetsImplement a simple state machine: Have we seen the "Change sets:" (incoming) line or not?
-
-
Constructor Details
-
JazzStatusConsumer
Constructor for our "scm status" consumer.- Parameters:
repo
- The JazzScmProviderRepository being used.logger
- The ScmLogger to use.
-
-
Method Details
-
consumeLine
Process one line of output from the execution of the "scm status" command.- Specified by:
consumeLine
in interfaceorg.codehaus.plexus.util.cli.StreamConsumer
- Overrides:
consumeLine
in classAbstractRepositoryConsumer
- Parameters:
line
- The line of output from the external command that has been pumped to us.- See Also:
-
containsWorkspace
-
extractWorkspace
-
containsComponent
-
extractComponent
-
containsBaseline
-
extractBaseline
-
containsStatusFlag
-
extractChangedFile
-
getChangedFiles
-
containsOutgoing
-
containsIncoming
-
containsBaselines
-
extractChangeSetAlias
Extract and return an Integer of a change set alias, from both incoming and outgoing changesets.- Parameters:
line
- The line to extract the change sets from.- Returns:
- A parsed Integer value, or null if not able to parse.
-