Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a74b158
commit a3b029a
Showing
7 changed files
with
252 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
...2/src/main/java/org/wicketstuff/pageserializer/kryo2/inspecting/SortedTreeSizeReport.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.wicketstuff.pageserializer.kryo2.inspecting; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Collections; | ||
import java.util.Comparator; | ||
import java.util.List; | ||
|
||
public class SortedTreeSizeReport extends TreeSizeReport { | ||
|
||
@Override | ||
protected List<? extends ISerializedObjectTree> preProcess( | ||
List<? extends ISerializedObjectTree> children) { | ||
|
||
List<ISerializedObjectTree> ret=new ArrayList<ISerializedObjectTree>(); | ||
ret.addAll(children); | ||
Collections.sort(ret,new Comparator<ISerializedObjectTree>() { | ||
@Override | ||
public int compare(ISerializedObjectTree o1, | ||
ISerializedObjectTree o2) { | ||
int s1=o1.size()+o1.childSize(); | ||
int s2=o2.size()+o2.childSize(); | ||
return s1==s2 ? 0 : s1<s2 ? 1 : -1; | ||
} | ||
}); | ||
return ret; | ||
} | ||
} |
50 changes: 49 additions & 1 deletion
50
...r-kryo2/src/main/java/org/wicketstuff/pageserializer/kryo2/inspecting/TreeSizeReport.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,59 @@ | ||
package org.wicketstuff.pageserializer.kryo2.inspecting; | ||
|
||
import java.util.List; | ||
|
||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
import org.wicketstuff.pageserializer.kryo2.inspecting.Reports.Ident; | ||
|
||
public class TreeSizeReport implements ISerializedObjectTreeProcessor { | ||
|
||
private final static Logger LOG = LoggerFactory | ||
.getLogger(TreeSizeReport.class); | ||
|
||
@Override | ||
public void process(ISerializedObjectTree tree) { | ||
// TODO Auto-generated method stub | ||
Ident ident=new Ident(2,' '); | ||
int labelColumnSize=labelColumnSize(tree,ident,0,0); | ||
|
||
StringBuilder sb=new StringBuilder(); | ||
sb.append("\n-----------------------------\n"); | ||
process(tree,sb,ident,0,tree.size()+tree.childSize(),labelColumnSize); | ||
LOG.debug(sb.toString()); | ||
} | ||
|
||
private void process(ISerializedObjectTree tree, StringBuilder sb,Ident ident, int level, | ||
int allSize, int labelColumnSize) { | ||
Reports.label(sb, new Ident(ident.size()*level,ident.value()), label(tree), labelColumnSize, '.'); | ||
Reports.rightColumn(sb, 4, '.', ""+((tree.size()+tree.childSize())*100/allSize), '<'); | ||
sb.append("%.|"); | ||
Reports.rightColumn(sb, 8, '.', ""+(tree.size()+tree.childSize()), '<'); | ||
sb.append("|"); | ||
Reports.rightColumn(sb, 8, '.', ""+tree.size(), '<'); | ||
sb.append("|"); | ||
Reports.rightColumn(sb, 8, '.', ""+tree.childSize(), '<'); | ||
sb.append("\n"); | ||
|
||
for (ISerializedObjectTree child : preProcess(tree.children())) { | ||
process(child, sb, ident, level+1, allSize, labelColumnSize); | ||
} | ||
} | ||
|
||
protected List<? extends ISerializedObjectTree> preProcess(List<? extends ISerializedObjectTree> children) { | ||
return children; | ||
} | ||
|
||
private int labelColumnSize(ISerializedObjectTree tree, Ident ident, int level, | ||
int parentColumnSize) { | ||
int columnSize=label(tree).length()+level*ident.size(); | ||
for (ISerializedObjectTree child : tree.children()) { | ||
columnSize=labelColumnSize(child, ident, level+1, columnSize); | ||
} | ||
return Math.max(columnSize, parentColumnSize); | ||
} | ||
|
||
private String label(ISerializedObjectTree tree) { | ||
return (tree.type().isAnonymousClass() ? tree.type().getSuperclass().getName() : tree.type().getName()) + (tree.label()!=null ? "("+tree.label()+")" : ""); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
.../src/test/java/org/wicketstuff/pageserializer/kryo2/inspecting/TestObjectTreeTracker.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.wicketstuff.pageserializer.kryo2.inspecting; | ||
|
||
import junit.framework.Assert; | ||
|
||
import org.junit.Test; | ||
|
||
public class TestObjectTreeTracker { | ||
|
||
@Test | ||
public void testSizes() { | ||
|
||
Object a="HA"; | ||
Object b=1; | ||
|
||
IObjectLabelizer labelizer=new IObjectLabelizer() { | ||
|
||
@Override | ||
public String labelFor(Object object) { | ||
return null; | ||
} | ||
}; | ||
|
||
ObjectTreeTracker tracker=new ObjectTreeTracker(labelizer,a); | ||
tracker.newItem(0, a); | ||
tracker.newItem(12,b); | ||
tracker.closeItem(14, b); | ||
tracker.closeItem(24, a); | ||
|
||
ISerializedObjectTree tree = tracker.end(a); | ||
Assert.assertEquals("size", 22,tree.size()); | ||
Assert.assertEquals("size", 2,tree.childSize()); | ||
} | ||
} |