Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
Autopsy
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IRT
Autopsy
Commits
10d27316
Commit
10d27316
authored
1 year ago
by
Greg DiCristofaro
Browse files
Options
Downloads
Patches
Plain Diff
changes
parent
18de6d96
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
release_scripts/APIUpdate/src/main/java/org/sleuthkit/autopsy/apiupdate/ChangeOutputGenerator.java
+91
-43
91 additions, 43 deletions
...rg/sleuthkit/autopsy/apiupdate/ChangeOutputGenerator.java
with
91 additions
and
43 deletions
release_scripts/APIUpdate/src/main/java/org/sleuthkit/autopsy/apiupdate/ChangeOutputGenerator.java
+
91
−
43
View file @
10d27316
...
...
@@ -19,6 +19,7 @@
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
javassist.CtClass
;
import
org.apache.commons.lang3.StringUtils
;
import
org.sleuthkit.autopsy.apiupdate.ApiChangeDTO.FieldChangeDTO
;
import
org.sleuthkit.autopsy.apiupdate.ApiChangeDTO.InterfaceChangeDTO
;
...
...
@@ -260,22 +261,21 @@ private void appendClass(StringBuilder sb, String signs, JApiClass jApiClass) {
}
private
String
getClassString
(
JApiClass
clz
,
boolean
oldClass
)
{
if
(
jApiClass
.
getChangeStatus
()
==
NEW
&&
oldClass
||
jApiClass
.
getChangeStatus
()
==
REMOVED
&&
!
oldClass
)
{
return
null
;
}
// TODO serial version id
// TODO annotations
String
accessModifier
=
str
(
get
(
clz
.
getAccessModifier
(),
oldClass
).
orElse
(
null
));
String
abstractModifier
=
str
(
get
(
clz
.
getAbstractModifier
(),
oldClass
).
orElse
(
null
));
String
staticModifier
=
str
(
get
(
clz
.
getStaticModifier
(),
oldClass
).
orElse
(
null
));
String
finalModifier
=
str
(
get
(
clz
.
getFinalModifier
(),
oldClass
).
orElse
(
null
));
String
syntheticModifier
=
str
(
get
(
clz
.
getSyntheticModifier
(),
oldClass
).
orElse
(
null
));
String
type
=
str
(
clz
.
getClassType
(),
oldClass
);
String
name
=
clz
.
getFullyQualifiedName
();
String
genericModifier
=
str
Opt
(
get
(
clz
.
getGenericTemplates
();
String
genericModifier
=
str
Generic
(
clz
.
getGenericTemplates
()
,
oldClass
)
;
String
implementsModifier
=
TBD
;
String
extendsModifier
=
TBD
;
String
implementsModifier
=
strImplements
(
clz
.
getInterfaces
(),
oldClass
)
;
String
extendsModifier
=
str
(
clz
.
getSuperclass
(),
oldClass
)
;
return
Stream
.
of
(
accessModifier
,
...
...
@@ -283,20 +283,72 @@ private String getClassString(JApiClass clz, boolean oldClass) {
staticModifier
,
finalModifier
,
syntheticModifier
,
"class"
,
type
,
name
+
(
StringUtils
.
isBlank
(
genericModifier
)
?
""
:
genericModifier
),
implementsModifier
,
extendsModifier
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
collect
(
Collectors
.
joining
(
" "
));
}
private
String
str
(
JApiSuperclass
supClz
,
boolean
oldClass
)
{
Optional
<
CtClass
>
ctClass
=
convert
(
oldClass
?
supClz
.
getOldSuperclass
()
:
supClz
.
getNewSuperclass
());
String
supClassExt
=
ctClass
.
map
(
ctClz
->
str
(
ctClz
)).
orElse
(
null
);
return
StringUtils
.
isBlank
(
supClassExt
)
?
null
:
"extends "
+
supClassExt
;
}
private
String
strImplements
(
List
<
JApiImplementedInterface
>
interfaces
,
boolean
oldClass
)
{
if
(
interfaces
.
isEmpty
())
{
return
null
;
}
String
interfaceStr
=
interfaces
.
stream
()
.
filter
(
i
->
(
oldClass
&&
i
.
getChangeStatus
()
==
NEW
)
||
(!
oldClass
&&
i
.
getChangeStatus
()
==
REMOVED
))
.
map
(
i
->
str
(
i
.
getCtClass
()))
.
collect
(
Collectors
.
joining
(
", "
));
return
StringUtils
.
isNotBlank
(
interfaceStr
)
?
"implements "
+
interfaceStr
:
null
;
}
// private List<GenericTemplateChangeDTO> getGenericTemplateChanges(JApiHasGenericTemplates jApiHasGenericTemplates) {
// return jApiHasGenericTemplates.getGenericTemplates().stream()
// .filter(template -> template.getChangeStatus() != JApiChangeStatus.UNCHANGED)
// .map(template -> new GenericTemplateChangeDTO())
// .collect(Collectors.toList());
//
private
String
str
(
CtClass
ctClass
)
{
return
ctClass
.
getName
()
+
(
StringUtils
.
isBlank
(
ctClass
.
getGenericSignature
())
?
""
:
"<"
+
ctClass
.
getGenericSignature
()
+
">"
);
}
private
String
str
(
JApiClassType
classType
,
boolean
oldClass
)
{
return
Optional
.
ofNullable
(
classType
)
.
flatMap
(
ct
->
convert
(
oldClass
?
ct
.
getOldTypeOptional
()
:
ct
.
getNewTypeOptional
()))
.
map
(
ct
->
ct
.
name
().
toLowerCase
())
.
orElse
(
"class"
);
}
private
String
strGeneric
(
List
<
JApiGenericTemplate
>
templates
,
boolean
oldClass
)
{
if
(
templates
.
isEmpty
())
{
return
null
;
}
String
genericParams
=
templates
.
stream
()
.
map
(
t
->
convert
(
oldClass
?
str
(
t
.
getName
(),
convert
(
t
.
getOldTypeOptional
()),
t
.
getOldInterfaceTypes
())
:
str
(
t
.
getName
(),
convert
(
t
.
getNewTypeOptional
()),
t
.
getNewInterfaceTypes
())
)
.
filter
(
Optional:
:
isPresent
)
.
map
(
t
->
t
.
get
())
.
collect
(
Collectors
.
joining
(
", "
));
return
StringUtils
.
isBlank
(
genericParams
)
?
null
:
"<"
+
genericParams
+
">"
;
}
private
String
strGeneric
(
String
name
,
Optional
<
String
>
mainType
,
List
<
JApiGenericType
>
genericType
)
{
}
// jApiGenericTemplate.getName() + ":" + interfaceTypes.join( "&")
//
// private List<GenericTemplateChangeDTO> getGenericTemplateChanges(JApiHasGenericTemplates jApiHasGenericTemplates) {
// if (!genericTemplates.isEmpty()) {
// sb.append(tabs(numberOfTabs)).append("GENERIC TEMPLATES: ");
// genericTemplates.sort(Comparator.comparing(JApiGenericTemplate::getName));
...
...
@@ -343,25 +395,24 @@ private String getClassString(JApiClass clz, boolean oldClass) {
// sb.append("\n");
// }
// }
// private void appendGenericTemplatesInterfaces(StringBuilder sb, JApiGenericTemplate jApiGenericTemplate, boolean printOld, boolean printNew) {
// if (printOld) {
// for (JApiGenericType jApiGenericType : jApiGenericTemplate.getOldInterfaceTypes()) {
// sb.append(" & ");
// sb.append(jApiGenericType.getType());
// appendGenericTypes(sb, false, jApiGenericType.getGenericTypes());
// }
// }
// if (printNew) {
// for (JApiGenericType jApiGenericType : jApiGenericTemplate.getNewInterfaceTypes()) {
// sb.append(" & ");
// sb.append(jApiGenericType.getType());
// appendGenericTypes(sb, false, jApiGenericType.getGenericTypes());
// }
// }
// }
// private String str(JApiHasGenericTemplates jApiHasGenericTemplates) {
// jApiHasGenericTemplates.getGenericTemplates().get(0).g
// }
private
void
appendGenericTemplatesInterfaces
(
StringBuilder
sb
,
JApiGenericTemplate
jApiGenericTemplate
,
boolean
printOld
,
boolean
printNew
)
{
if
(
printOld
)
{
for
(
JApiGenericType
jApiGenericType
:
jApiGenericTemplate
.
getOldInterfaceTypes
())
{
sb
.
append
(
" & "
);
sb
.
append
(
jApiGenericType
.
getType
());
appendGenericTypes
(
sb
,
false
,
jApiGenericType
.
getGenericTypes
());
}
}
if
(
printNew
)
{
for
(
JApiGenericType
jApiGenericType
:
jApiGenericTemplate
.
getNewInterfaceTypes
())
{
sb
.
append
(
" & "
);
sb
.
append
(
jApiGenericType
.
getType
());
appendGenericTypes
(
sb
,
false
,
jApiGenericType
.
getGenericTypes
());
}
}
}
private
FieldChangeDTO
getFieldChange
(
JApiField
field
)
{
return
new
FieldChangeDTO
(
field
.
getChangeStatus
(),
...
...
@@ -370,15 +421,11 @@ private FieldChangeDTO getFieldChange(JApiField field) {
}
private
String
getFieldString
(
JApiField
field
,
boolean
oldField
)
{
if
(
field
.
getChangeStatus
()
==
NEW
&&
oldField
||
field
.
getChangeStatus
()
==
REMOVED
&&
!
oldField
)
{
return
null
;
}
String
accessModifier
=
str
(
get
(
field
.
getAccessModifier
(),
oldField
).
orElse
(
null
));
String
staticModifier
=
str
(
get
(
field
.
getStaticModifier
(),
oldField
).
orElse
(
null
));
String
finalModifier
=
str
(
get
(
field
.
getFinalModifier
(),
oldField
).
orElse
(
null
));
String
syntheticModifier
=
str
(
get
(
field
.
getSyntheticModifier
(),
oldField
).
orElse
(
null
));
String
fieldType
=
strOpt
(
field
.
getType
(),
oldField
).
orElse
(
""
);
String
fieldType
=
strOpt
(
field
.
getType
(),
oldField
).
orElse
(
null
);
String
name
=
field
.
getName
();
return
Stream
.
of
(
accessModifier
,
staticModifier
,
finalModifier
,
syntheticModifier
,
fieldType
,
name
)
...
...
@@ -388,7 +435,7 @@ private String getFieldString(JApiField field, boolean oldField) {
private
String
str
(
AccessModifier
modifier
)
{
if
(
modifier
==
null
||
modifier
==
AccessModifier
.
PACKAGE_PROTECTED
)
{
return
""
;
return
null
;
}
else
{
return
modifier
.
name
().
toLowerCase
();
}
...
...
@@ -397,25 +444,25 @@ private String str(AccessModifier modifier) {
private
String
str
(
StaticModifier
modifier
)
{
return
(
modifier
==
StaticModifier
.
STATIC
)
?
"static"
:
""
;
:
null
;
}
private
String
str
(
FinalModifier
modifier
)
{
return
(
modifier
==
FinalModifier
.
FINAL
)
?
"final"
:
""
;
:
null
;
}
private
String
str
(
SyntheticModifier
modifier
)
{
return
(
modifier
==
SyntheticModifier
.
SYNTHETIC
)
?
"synthetic"
:
""
;
:
null
;
}
private
String
str
(
AbstractModifier
modifier
)
{
return
(
modifier
==
AbstractModifier
.
ABSTRACT
)
?
"abstract"
:
""
;
:
null
;
}
private
Optional
<
String
>
strOpt
(
JApiType
tp
,
boolean
oldField
)
{
...
...
@@ -611,4 +658,5 @@ private <T> Optional<T> convert(japicmp.util.Optional<T> apiOpt) {
// }
// return "n.a.";
// }
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment