All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.objectos.git.Git.plantuml Maven / Gradle / Ivy

Go to download

ObjectosGit is a pure Java library that provides a limited set of GIT operations.

The newest version!
'
' Copyright (C) 2020-2022 Objectos Software LTDA.
'
' Licensed under the Apache License, Version 2.0 (the "License");
' you may not use this file except in compliance with the License.
' You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
'

@startuml

' config

hide empty members
' left to right direction
skinparam genericDisplay old
' skinparam monochrome true
skinparam shadowing false
' skinparam style strictuml

' classes ordered by name

abstract class AbstractReadObjectTask extends AbstractTask {
  ~ ObjectDatabase database
  ~ ObjectId objectId
  {abstract} + GitObject getResult()\n throws IOException;
}

abstract class AbstractGitCommand implements GitCommand, GitUriVisitor, TaskResultVisitor {
  ~ GitCommandAdapter adapter
}

abstract class AbstractTask implements Task {
  ~ TaskAdapter adapter
}

interface Blob extends GitObject

class BlobId extends ObjectId

interface Commit extends GitObject

class CommitId extends ObjectId

interface Computable {
  + R getResult()\n throws IOException
}

interface Copy {
  + void start(TargetCommit c)
  + void visitBlob(SourceCommit c)
  + void visitCommit(SourceCommit c)
  + void visitEntry(SourceBlobEntry e)
  + void visitEntry(SourceTreeEntry e)
  + void visitTree(SourceTree t)
}

class CopyCommand extends AbstractGitCommand {
  + CommitId getResult()\nthrows IOException
}

class MaterializeBlobTask extends AbstractReadObjectTask {
  - WritableByteChannel target
  + Boolean getResult()\nthrows IOException
}

class FetchCommitTask extends AbstractReadObjectTask {
  + Commit getResult()\nthrows IOException
}

class FetchTreeTask extends AbstractReadObjectTask {
  + Tree getResult()\nthrows IOException
}

class Git {
  {static} + GitMachine\ncreateMachine(\nByteBuffer byteBuffer,\nCharBuffer charBuffer,\nByteBuffer dataBuffer,\nIoExecutor ioExecutor)
}

interface GitCommand extends Computable

interface GitCommandAdapter extends TaskAdapter

interface GitMachine extends Machine {
  + Computable\ncopy(\nRepository source,\nCommitId id,\nRepository target,\nCopyOption... o)
  + Computable\nmaterialize(\nRepository repo,\nObjectId id,\nDirectory target)
  + Computable\nopenRepository(\nDirectory d)
}

interface GitObject extends TaskResult

interface Machine {
  + boolean shouldExecute()
  + void executeOne()
}

class MachineInstance implements GitCommandAdapter, GitMachine {
  - ByteBuffer byteBuffer
  - CharBuffer charBuffer
  - ByteBuffer dataBuffer
  - IoExecutor ioExecutor
}

class MaterializeCommand extends AbstractGitCommand {
  + Directory getResult()\nthrows IOException
}

class ObjectDatabase {
  - Directory directory
  + FileChannel\nopenObjectReader(\nObjectId id)
}

abstract class ObjectId

class OpenRepositoryCommand extends AbstractGitCommand {
  + Repository getResult()\nthrows IOException
} 

abstract RefName

class RefName.RefsHeads extends RefName

class Repository implements TaskResult {
  - Directory directory
  - ObjectDatabase objectDatabase
  + ObjectId resolve(RefName name)
}

interface Task extends Computable, Machine

interface TaskAdapter

interface TaskResult {
  + void\nacceptTaskResultVisitor(\nTaskResultVisitor v)
}

interface TaskResultVisitor {
  + void\nvisitRepository(\nRepository r)
}

class Tree implements GitObject

class TreeId extends ObjectId

' rels

CopyCommand -[hidden]d- Copy
FetchCommitTask -[hidden]d- TaskResult
Git -[hidden]d-- Computable
Git -[hidden]r- GitUri
Repository::objectDatabase -d- ObjectDatabase
Repository -[hidden]d- RefName

@enduml




© 2015 - 2025 Weber Informatics LLC | Privacy Policy