Skip to content

Commit d094ff3

Browse files
author
Alex Huang
committed
more changes from merge
2 parents 7249f16 + 28b315d commit d094ff3

3 files changed

Lines changed: 120 additions & 0 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
*
3+
*/
4+
package com.cloud.vm;
5+
6+
import com.cloud.offering.ServiceOffering;
7+
import com.cloud.template.VirtualMachineTemplate;
8+
import com.cloud.utils.component.Adapter;
9+
10+
public interface VirtualMachineProfiler extends Adapter {
11+
12+
VmCharacteristics convert(ServiceOffering offering, VirtualMachineTemplate template);
13+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/**
2+
*
3+
*/
4+
package com.cloud.utils;
5+
6+
import java.util.ArrayList;
7+
8+
import org.apache.log4j.Level;
9+
import org.apache.log4j.Logger;
10+
11+
/**
12+
* Journal is used to kept what has happened during a process so someone can track
13+
* what happens during a process.
14+
*
15+
*/
16+
public class Journal {
17+
String _name;
18+
ArrayList<Pair<String, Object[]>> _entries;
19+
20+
public Journal(String name) {
21+
_name = name;
22+
_entries = new ArrayList<Pair<String, Object[]>>();
23+
}
24+
25+
26+
final private void log(String msg, Object... params) {
27+
Pair<String, Object[]> entry = new Pair<String, Object[]>(msg, params);
28+
assert msg != null : "Message can not be null or else it's useless!";
29+
_entries.add(entry);
30+
}
31+
32+
public void record(String msg, Object... params) {
33+
log(msg, params);
34+
}
35+
36+
public void record(Logger logger, Level p, String msg, Object... params) {
37+
if (logger.getLevel().isGreaterOrEqual(p)) {
38+
StringBuilder buf = new StringBuilder();
39+
toString(buf, msg, params);
40+
String entry = buf.toString();
41+
log(entry);
42+
logger.log(p, entry);
43+
} else {
44+
log(msg, params);
45+
}
46+
}
47+
48+
protected void toString(StringBuilder buf, String msg, Object[] params) {
49+
buf.append(msg);
50+
if (params != null) {
51+
buf.append(" - ");
52+
int i = 0;
53+
for (Object obj : params) {
54+
buf.append('P').append(i).append('=');
55+
buf.append(obj != null ? obj.toString() : "null");
56+
buf.append(", ");
57+
}
58+
buf.delete(buf.length() - 2, buf.length());
59+
}
60+
}
61+
62+
public String toString(String separator) {
63+
StringBuilder buf = new StringBuilder(_name).append(": ");
64+
for (Pair<String, Object[]> entry : _entries) {
65+
toString(buf, entry.first(), entry.second());
66+
buf.append(separator);
67+
}
68+
return buf.toString();
69+
}
70+
71+
@Override
72+
public String toString() {
73+
return toString("; ");
74+
}
75+
76+
public static class LogJournal extends Journal {
77+
Logger _logger;
78+
public LogJournal(String name, Logger logger) {
79+
super(name);
80+
_logger = logger;
81+
}
82+
83+
@Override
84+
public void record(String msg, Object... params) {
85+
record(_logger, Level.DEBUG, msg, params);
86+
}
87+
}
88+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
*
3+
*/
4+
package com.cloud.utils.component;
5+
6+
import java.lang.annotation.Annotation;
7+
import java.lang.reflect.AnnotatedElement;
8+
9+
/**
10+
* Injector implements customized Injectors for ComponentLocator.
11+
*
12+
*/
13+
public interface Injector {
14+
/**
15+
* Can this injector handle injecting into this type of class?
16+
*/
17+
boolean canInject(AnnotatedElement element, Annotation ann);
18+
19+
}

0 commit comments

Comments
 (0)