Skip to content

Instantly share code, notes, and snippets.

@simonbrowndotje
Last active August 29, 2015 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simonbrowndotje/fd0aa523747d36789eae to your computer and use it in GitHub Desktop.
Save simonbrowndotje/fd0aa523747d36789eae to your computer and use it in GitHub Desktop.
The JSON representation of the C4 model for the Spring PetClinic application
{
"people" : [ {
"id" : 2,
"name" : "User",
"description" : "",
"location" : "External",
"relationships" : [ {
"sourceId" : 2,
"destinationId" : 1,
"description" : "Uses"
}, {
"sourceId" : 2,
"destinationId" : 3,
"description" : "Uses"
} ],
"type" : "Person"
} ],
"softwareSystems" : [ {
"id" : 1,
"name" : "Spring PetClinic",
"description" : "",
"location" : "Internal",
"relationships" : [ ],
"containers" : [ {
"id" : 3,
"name" : "Web Application",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 3,
"destinationId" : 4,
"description" : "Reads from and writes to"
} ],
"technology" : "Apache Tomcat 7.x",
"components" : [ {
"id" : 8,
"name" : "VetController",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 8,
"destinationId" : 10,
"description" : ""
} ],
"technology" : "Spring Controller",
"interfaceType" : "org.springframework.samples.petclinic.web.VetController",
"implementationType" : "org.springframework.samples.petclinic.web.VetController",
"type" : "Component"
}, {
"id" : 7,
"name" : "VisitController",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 7,
"destinationId" : 10,
"description" : ""
} ],
"technology" : "Spring Controller",
"interfaceType" : "org.springframework.samples.petclinic.web.VisitController",
"implementationType" : "org.springframework.samples.petclinic.web.VisitController",
"type" : "Component"
}, {
"id" : 13,
"name" : "VetRepository",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 13,
"destinationId" : 4,
"description" : "blah"
} ],
"technology" : "Spring Repository",
"interfaceType" : "org.springframework.samples.petclinic.repository.VetRepository",
"implementationType" : "org.springframework.samples.petclinic.repository.jdbc.JdbcVetRepositoryImpl",
"type" : "Component"
}, {
"id" : 5,
"name" : "PetController",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 5,
"destinationId" : 10,
"description" : ""
} ],
"technology" : "Spring Controller",
"interfaceType" : "org.springframework.samples.petclinic.web.PetController",
"implementationType" : "org.springframework.samples.petclinic.web.PetController",
"type" : "Component"
}, {
"id" : 10,
"name" : "ClinicService",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 10,
"destinationId" : 11,
"description" : ""
}, {
"sourceId" : 10,
"destinationId" : 12,
"description" : ""
}, {
"sourceId" : 10,
"destinationId" : 13,
"description" : ""
}, {
"sourceId" : 10,
"destinationId" : 14,
"description" : ""
} ],
"technology" : "Spring Service",
"interfaceType" : "org.springframework.samples.petclinic.service.ClinicService",
"implementationType" : "org.springframework.samples.petclinic.service.ClinicServiceImpl",
"type" : "Component"
}, {
"id" : 9,
"name" : "CrashController",
"description" : "",
"location" : "Internal",
"relationships" : [ ],
"technology" : "Spring Controller",
"interfaceType" : "org.springframework.samples.petclinic.web.CrashController",
"implementationType" : "org.springframework.samples.petclinic.web.CrashController",
"type" : "Component"
}, {
"id" : 11,
"name" : "PetRepository",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 11,
"destinationId" : 14,
"description" : ""
}, {
"sourceId" : 11,
"destinationId" : 12,
"description" : ""
}, {
"sourceId" : 11,
"destinationId" : 4,
"description" : "blah"
} ],
"technology" : "Spring Repository",
"interfaceType" : "org.springframework.samples.petclinic.repository.PetRepository",
"implementationType" : "org.springframework.samples.petclinic.repository.jdbc.JdbcPetRepositoryImpl",
"type" : "Component"
}, {
"id" : 6,
"name" : "OwnerController",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 6,
"destinationId" : 10,
"description" : ""
} ],
"technology" : "Spring Controller",
"interfaceType" : "org.springframework.samples.petclinic.web.OwnerController",
"implementationType" : "org.springframework.samples.petclinic.web.OwnerController",
"type" : "Component"
}, {
"id" : 14,
"name" : "OwnerRepository",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 14,
"destinationId" : 12,
"description" : ""
}, {
"sourceId" : 14,
"destinationId" : 4,
"description" : "blah"
} ],
"technology" : "Spring Repository",
"interfaceType" : "org.springframework.samples.petclinic.repository.OwnerRepository",
"implementationType" : "org.springframework.samples.petclinic.repository.jdbc.JdbcOwnerRepositoryImpl",
"type" : "Component"
}, {
"id" : 12,
"name" : "VisitRepository",
"description" : "",
"location" : "Internal",
"relationships" : [ {
"sourceId" : 12,
"destinationId" : 4,
"description" : "blah"
} ],
"technology" : "Spring Repository",
"interfaceType" : "org.springframework.samples.petclinic.repository.VisitRepository",
"implementationType" : "org.springframework.samples.petclinic.repository.jdbc.JdbcVisitRepositoryImpl",
"type" : "Component"
} ],
"type" : "Container"
}, {
"id" : 4,
"name" : "Relational Database",
"description" : "",
"location" : "Internal",
"relationships" : [ ],
"technology" : "HSQLDB",
"components" : [ ],
"type" : "Container"
} ],
"type" : "SoftwareSystem"
} ],
"systemContextViews" : [ {
"softwareSystemId" : 1,
"description" : null,
"type" : "SystemContext",
"relationships" : [ {
"sourceId" : 2,
"destinationId" : 1
} ],
"elements" : [ {
"id" : 1
}, {
"id" : 2
} ]
} ],
"containerViews" : [ {
"softwareSystemId" : 1,
"description" : null,
"type" : "Container",
"relationships" : [ {
"sourceId" : 2,
"destinationId" : 3
}, {
"sourceId" : 3,
"destinationId" : 4
} ],
"elements" : [ {
"id" : 2
}, {
"id" : 3
}, {
"id" : 4
} ]
} ],
"componentViews" : [ {
"softwareSystemId" : 1,
"description" : null,
"containerId" : 3,
"type" : "Component",
"relationships" : [ {
"sourceId" : 10,
"destinationId" : 13
}, {
"sourceId" : 13,
"destinationId" : 4
}, {
"sourceId" : 8,
"destinationId" : 10
}, {
"sourceId" : 12,
"destinationId" : 4
}, {
"sourceId" : 10,
"destinationId" : 14
}, {
"sourceId" : 11,
"destinationId" : 14
}, {
"sourceId" : 6,
"destinationId" : 10
}, {
"sourceId" : 10,
"destinationId" : 11
}, {
"sourceId" : 14,
"destinationId" : 12
}, {
"sourceId" : 10,
"destinationId" : 12
}, {
"sourceId" : 11,
"destinationId" : 4
}, {
"sourceId" : 14,
"destinationId" : 4
}, {
"sourceId" : 5,
"destinationId" : 10
}, {
"sourceId" : 11,
"destinationId" : 12
}, {
"sourceId" : 7,
"destinationId" : 10
} ],
"elements" : [ {
"id" : 4
}, {
"id" : 5
}, {
"id" : 6
}, {
"id" : 7
}, {
"id" : 8
}, {
"id" : 9
}, {
"id" : 10
}, {
"id" : 11
}, {
"id" : 12
}, {
"id" : 13
}, {
"id" : 14
} ]
} ]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment