diff --git a/utils/conf/db.properties b/utils/conf/db.properties index 2b7e851f32c..7dc3b11abde 100644 --- a/utils/conf/db.properties +++ b/utils/conf/db.properties @@ -1,40 +1,40 @@ -# management server clustering parameters, change cluster.node.IP to the machine IP address -# in which the management server(Tomcat) is running -cluster.node.IP=127.0.0.1 -cluster.servlet.port=9090 - -# CloudStack database settings -db.cloud.username=cloud -db.cloud.password=cloud -db.cloud.host=localhost -db.cloud.port=3306 -db.cloud.name=cloud - -# CloudStack database tuning parameters -db.cloud.maxActive=250 -db.cloud.maxIdle=30 -db.cloud.maxWait=10000 -db.cloud.autoReconnect=true -db.cloud.validationQuery=SELECT 1 -db.cloud.testOnBorrow=true -db.cloud.testWhileIdle=true -db.cloud.timeBetweenEvictionRunsMillis=40000 -db.cloud.minEvictableIdleTimeMillis=240000 -db.cloud.removeAbandoned=false -db.cloud.removeAbandonedTimeout=300 -db.cloud.logAbandoned=true -db.cloud.poolPreparedStatements=false -db.cloud.url.params=prepStmtCacheSize=517&cachePrepStmts=true&prepStmtCacheSqlLimit=4096 - -# usage database settings -db.usage.username=cloud -db.usage.password=cloud -db.usage.host=localhost -db.usage.port=3306 -db.usage.name=cloud_usage - -# usage database tuning parameters -db.usage.maxActive=100 -db.usage.maxIdle=30 -db.usage.maxWait=10000 -db.usage.autoReconnect=true +# management server clustering parameters, change cluster.node.IP to the machine IP address +# in which the management server(Tomcat) is running +cluster.node.IP=127.0.0.1 +cluster.servlet.port=9090 + +# CloudStack database settings +db.cloud.username=cloud +db.cloud.password=cloud +db.cloud.host=localhost +db.cloud.port=3306 +db.cloud.name=cloud + +# CloudStack database tuning parameters +db.cloud.maxActive=250 +db.cloud.maxIdle=30 +db.cloud.maxWait=10000 +db.cloud.autoReconnect=true +db.cloud.validationQuery=SELECT 1 +db.cloud.testOnBorrow=true +db.cloud.testWhileIdle=true +db.cloud.timeBetweenEvictionRunsMillis=40000 +db.cloud.minEvictableIdleTimeMillis=240000 +db.cloud.removeAbandoned=false +db.cloud.removeAbandonedTimeout=300 +db.cloud.logAbandoned=true +db.cloud.poolPreparedStatements=false +db.cloud.url.params=prepStmtCacheSize=517&cachePrepStmts=true&prepStmtCacheSqlLimit=4096 + +# usage database settings +db.usage.username=cloud +db.usage.password=cloud +db.usage.host=localhost +db.usage.port=3306 +db.usage.name=cloud_usage + +# usage database tuning parameters +db.usage.maxActive=100 +db.usage.maxIdle=30 +db.usage.maxWait=10000 +db.usage.autoReconnect=true diff --git a/utils/src/com/cloud/utils/ActionDelegate.java b/utils/src/com/cloud/utils/ActionDelegate.java index df56003a7c0..bfb8ea00c6a 100644 --- a/utils/src/com/cloud/utils/ActionDelegate.java +++ b/utils/src/com/cloud/utils/ActionDelegate.java @@ -10,8 +10,8 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -public interface ActionDelegate { - void action(T param); -} +package com.cloud.utils; + +public interface ActionDelegate { + void action(T param); +} diff --git a/utils/src/com/cloud/utils/AnnotationHelper.java b/utils/src/com/cloud/utils/AnnotationHelper.java index 21c293fc731..393d9a54a75 100755 --- a/utils/src/com/cloud/utils/AnnotationHelper.java +++ b/utils/src/com/cloud/utils/AnnotationHelper.java @@ -10,46 +10,46 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -import javax.persistence.Table; - -import org.apache.log4j.Logger; - -import com.cloud.utils.exception.CSExceptionErrorCode; - - -public class AnnotationHelper extends Object { - // This class contains routines to help query annotation elements of objects. - - public static final Logger s_logger = Logger.getLogger(AnnotationHelper.class.getName()); - - public static String getTableName(Object proxyObj) { - // The cglib class is generated by cglib during runtime. - - Class curClass = proxyObj.getClass(); - if (curClass == null) { - s_logger.info("\nCould not retrieve class information for proxy object\n"); - return null; - } - - while (curClass.getSuperclass() != null && curClass.getSuperclass().getName() != "java.lang.Object") { - curClass = curClass.getSuperclass(); - } - // At this point, curClass is the root base class of proxyObj's class, and curClass is not java.lang.Object. - - Table tabObj = (Table)curClass.getAnnotation(Table.class); - - if (tabObj == null) { - s_logger.info("\n" + curClass + "does not have a Table annotation\n"); - return null; - } - - return tabObj.name(); - } - -} - - - - +package com.cloud.utils; + +import javax.persistence.Table; + +import org.apache.log4j.Logger; + +import com.cloud.utils.exception.CSExceptionErrorCode; + + +public class AnnotationHelper extends Object { + // This class contains routines to help query annotation elements of objects. + + public static final Logger s_logger = Logger.getLogger(AnnotationHelper.class.getName()); + + public static String getTableName(Object proxyObj) { + // The cglib class is generated by cglib during runtime. + + Class curClass = proxyObj.getClass(); + if (curClass == null) { + s_logger.info("\nCould not retrieve class information for proxy object\n"); + return null; + } + + while (curClass.getSuperclass() != null && curClass.getSuperclass().getName() != "java.lang.Object") { + curClass = curClass.getSuperclass(); + } + // At this point, curClass is the root base class of proxyObj's class, and curClass is not java.lang.Object. + + Table tabObj = (Table)curClass.getAnnotation(Table.class); + + if (tabObj == null) { + s_logger.info("\n" + curClass + "does not have a Table annotation\n"); + return null; + } + + return tabObj.name(); + } + +} + + + + diff --git a/utils/src/com/cloud/utils/CloudResourceBundle.java b/utils/src/com/cloud/utils/CloudResourceBundle.java index 1cf911779e5..b9aa7b18046 100755 --- a/utils/src/com/cloud/utils/CloudResourceBundle.java +++ b/utils/src/com/cloud/utils/CloudResourceBundle.java @@ -10,32 +10,32 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -import java.util.Locale; -import java.util.ResourceBundle; - -public class CloudResourceBundle { - - private ResourceBundle _bundle; - - public CloudResourceBundle(ResourceBundle bundle) { - _bundle = bundle; - } - - public static CloudResourceBundle getBundle(String baseName, Locale locale) { - return new CloudResourceBundle(ResourceBundle.getBundle(baseName, locale)); - } - - private String getString(String key) { - try { - return _bundle.getString(key); - } catch(Exception e) { - return key; //if translation is not found, just return original word (i.e. English). - } - } - - public String t(String key) { - return getString(key); - } -} +package com.cloud.utils; + +import java.util.Locale; +import java.util.ResourceBundle; + +public class CloudResourceBundle { + + private ResourceBundle _bundle; + + public CloudResourceBundle(ResourceBundle bundle) { + _bundle = bundle; + } + + public static CloudResourceBundle getBundle(String baseName, Locale locale) { + return new CloudResourceBundle(ResourceBundle.getBundle(baseName, locale)); + } + + private String getString(String key) { + try { + return _bundle.getString(key); + } catch(Exception e) { + return key; //if translation is not found, just return original word (i.e. English). + } + } + + public String t(String key) { + return getString(key); + } +} diff --git a/utils/src/com/cloud/utils/DateUtil.java b/utils/src/com/cloud/utils/DateUtil.java index ed8d31312ca..9339572bed3 100644 --- a/utils/src/com/cloud/utils/DateUtil.java +++ b/utils/src/com/cloud/utils/DateUtil.java @@ -10,8 +10,8 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - +package com.cloud.utils; + import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -20,51 +20,51 @@ import java.util.Date; import java.util.TimeZone; import com.cloud.utils.exception.CloudRuntimeException; - + public class DateUtil { public static final TimeZone GMT_TIMEZONE = TimeZone.getTimeZone("GMT"); public static final String YYYYMMDD_FORMAT = "yyyyMMddHHmmss"; private static final DateFormat _outputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - - public static Date currentGMTTime() { - // Date object always stores miliseconds offset based on GMT internally - return new Date(); - } + + public static Date currentGMTTime() { + // Date object always stores miliseconds offset based on GMT internally + return new Date(); + } // yyyy-MM-ddTHH:mm:ssZxxxx public static Date parseTZDateString(String str) throws ParseException { DateFormat dfParse = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'Z"); return dfParse.parse(str); } - - public static Date parseDateString(TimeZone tz, String dateString) { - return parseDateString(tz, dateString, "yyyy-MM-dd HH:mm:ss"); - } - - public static Date parseDateString(TimeZone tz, String dateString, String formatString) { - DateFormat df = new SimpleDateFormat(formatString); - df.setTimeZone(tz); - - try { - return df.parse(dateString); - } catch (ParseException e) { - throw new CloudRuntimeException("why why ", e); - } - } + + public static Date parseDateString(TimeZone tz, String dateString) { + return parseDateString(tz, dateString, "yyyy-MM-dd HH:mm:ss"); + } + + public static Date parseDateString(TimeZone tz, String dateString, String formatString) { + DateFormat df = new SimpleDateFormat(formatString); + df.setTimeZone(tz); + + try { + return df.parse(dateString); + } catch (ParseException e) { + throw new CloudRuntimeException("why why ", e); + } + } public static String displayDateInTimezone(TimeZone tz, Date time) { return getDateDisplayString(tz, time, "yyyy-MM-dd HH:mm:ss z"); } - - public static String getDateDisplayString(TimeZone tz, Date time) { - return getDateDisplayString(tz, time, "yyyy-MM-dd HH:mm:ss"); - } - - public static String getDateDisplayString(TimeZone tz, Date time, String formatString) { - DateFormat df = new SimpleDateFormat(formatString); - df.setTimeZone(tz); - - return df.format(time); + + public static String getDateDisplayString(TimeZone tz, Date time) { + return getDateDisplayString(tz, time, "yyyy-MM-dd HH:mm:ss"); + } + + public static String getDateDisplayString(TimeZone tz, Date time, String formatString) { + DateFormat df = new SimpleDateFormat(formatString); + df.setTimeZone(tz); + + return df.format(time); } public static String getOutputString(Date date) { @@ -79,10 +79,10 @@ public class DateUtil { } public enum IntervalType { - HOURLY, - DAILY, - WEEKLY, - MONTHLY; + HOURLY, + DAILY, + WEEKLY, + MONTHLY; boolean equals(String intervalType) { return super.toString().equalsIgnoreCase(intervalType); @@ -95,145 +95,145 @@ public class DateUtil { } } return null; - } + } } - - public static IntervalType getIntervalType(short type){ + + public static IntervalType getIntervalType(short type){ if (type < 0 || type >= IntervalType.values().length) { return null; } - return IntervalType.values()[type]; + return IntervalType.values()[type]; } - - /** - * Return next run time - * @param intervalType hourly/daily/weekly/monthly + + /** + * Return next run time + * @param intervalType hourly/daily/weekly/monthly * @param schedule MM[:HH][:DD] format. DD is day of week for weekly and day of month for monthly - * @param timezone The timezone in which the schedule string is specified - * @param startDate if specified, returns next run time after the specified startDate - * @return - */ - public static Date getNextRunTime(IntervalType type, String schedule, String timezone, Date startDate) { - - String[] scheduleParts = schedule.split(":"); //MM:HH:DAY - - final Calendar scheduleTime = Calendar.getInstance(); + * @param timezone The timezone in which the schedule string is specified + * @param startDate if specified, returns next run time after the specified startDate + * @return + */ + public static Date getNextRunTime(IntervalType type, String schedule, String timezone, Date startDate) { + + String[] scheduleParts = schedule.split(":"); //MM:HH:DAY + + final Calendar scheduleTime = Calendar.getInstance(); scheduleTime.setTimeZone(TimeZone.getTimeZone(timezone)); - + if(startDate == null){ - startDate = new Date(); + startDate = new Date(); } - scheduleTime.setTime(startDate); - // Throw an ArrayIndexOutOfBoundsException if schedule is badly formatted. - scheduleTime.setLenient(false); - int minutes = 0; - int hour = 0; - int day = 0; - Date execDate = null; - - switch(type){ - case HOURLY: - if(scheduleParts.length < 1){ - throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); - } - minutes = Integer.parseInt(scheduleParts[0]); - scheduleTime.set(Calendar.MINUTE, minutes); - scheduleTime.set(Calendar.SECOND, 0); - scheduleTime.set(Calendar.MILLISECOND, 0); - execDate = scheduleTime.getTime(); - // XXX: !execDate.after(startDate) is strictly for testing. - // During testing we use a test clock which runs much faster than the real clock - // So startDate and execDate will always be ahead in the future - // and we will never increase the time here - if (execDate.before(new Date()) || !execDate.after(startDate)) { - scheduleTime.add(Calendar.HOUR_OF_DAY, 1); - } - break; - case DAILY: - if(scheduleParts.length < 2){ - throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); - } - minutes = Integer.parseInt(scheduleParts[0]); - hour = Integer.parseInt(scheduleParts[1]); - - scheduleTime.set(Calendar.HOUR_OF_DAY, hour); - scheduleTime.set(Calendar.MINUTE, minutes); - scheduleTime.set(Calendar.SECOND, 0); - scheduleTime.set(Calendar.MILLISECOND, 0); - execDate = scheduleTime.getTime(); - // XXX: !execDate.after(startDate) is strictly for testing. - // During testing we use a test clock which runs much faster than the real clock - // So startDate and execDate will always be ahead in the future - // and we will never increase the time here - if (execDate.before(new Date()) || !execDate.after(startDate)) { - scheduleTime.add(Calendar.DAY_OF_YEAR, 1); - } - break; - case WEEKLY: - if(scheduleParts.length < 3){ - throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); - } - minutes = Integer.parseInt(scheduleParts[0]); - hour = Integer.parseInt(scheduleParts[1]); - day = Integer.parseInt(scheduleParts[2]); - scheduleTime.set(Calendar.DAY_OF_WEEK, day); - scheduleTime.set(Calendar.HOUR_OF_DAY, hour); - scheduleTime.set(Calendar.MINUTE, minutes); - scheduleTime.set(Calendar.SECOND, 0); - scheduleTime.set(Calendar.MILLISECOND, 0); - execDate = scheduleTime.getTime(); - // XXX: !execDate.after(startDate) is strictly for testing. - // During testing we use a test clock which runs much faster than the real clock - // So startDate and execDate will always be ahead in the future - // and we will never increase the time here - if (execDate.before(new Date()) || !execDate.after(startDate)) { - scheduleTime.add(Calendar.DAY_OF_WEEK, 7); - }; - break; - case MONTHLY: - if(scheduleParts.length < 3){ - throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); - } - minutes = Integer.parseInt(scheduleParts[0]); - hour = Integer.parseInt(scheduleParts[1]); + scheduleTime.setTime(startDate); + // Throw an ArrayIndexOutOfBoundsException if schedule is badly formatted. + scheduleTime.setLenient(false); + int minutes = 0; + int hour = 0; + int day = 0; + Date execDate = null; + + switch(type){ + case HOURLY: + if(scheduleParts.length < 1){ + throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); + } + minutes = Integer.parseInt(scheduleParts[0]); + scheduleTime.set(Calendar.MINUTE, minutes); + scheduleTime.set(Calendar.SECOND, 0); + scheduleTime.set(Calendar.MILLISECOND, 0); + execDate = scheduleTime.getTime(); + // XXX: !execDate.after(startDate) is strictly for testing. + // During testing we use a test clock which runs much faster than the real clock + // So startDate and execDate will always be ahead in the future + // and we will never increase the time here + if (execDate.before(new Date()) || !execDate.after(startDate)) { + scheduleTime.add(Calendar.HOUR_OF_DAY, 1); + } + break; + case DAILY: + if(scheduleParts.length < 2){ + throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); + } + minutes = Integer.parseInt(scheduleParts[0]); + hour = Integer.parseInt(scheduleParts[1]); + + scheduleTime.set(Calendar.HOUR_OF_DAY, hour); + scheduleTime.set(Calendar.MINUTE, minutes); + scheduleTime.set(Calendar.SECOND, 0); + scheduleTime.set(Calendar.MILLISECOND, 0); + execDate = scheduleTime.getTime(); + // XXX: !execDate.after(startDate) is strictly for testing. + // During testing we use a test clock which runs much faster than the real clock + // So startDate and execDate will always be ahead in the future + // and we will never increase the time here + if (execDate.before(new Date()) || !execDate.after(startDate)) { + scheduleTime.add(Calendar.DAY_OF_YEAR, 1); + } + break; + case WEEKLY: + if(scheduleParts.length < 3){ + throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); + } + minutes = Integer.parseInt(scheduleParts[0]); + hour = Integer.parseInt(scheduleParts[1]); + day = Integer.parseInt(scheduleParts[2]); + scheduleTime.set(Calendar.DAY_OF_WEEK, day); + scheduleTime.set(Calendar.HOUR_OF_DAY, hour); + scheduleTime.set(Calendar.MINUTE, minutes); + scheduleTime.set(Calendar.SECOND, 0); + scheduleTime.set(Calendar.MILLISECOND, 0); + execDate = scheduleTime.getTime(); + // XXX: !execDate.after(startDate) is strictly for testing. + // During testing we use a test clock which runs much faster than the real clock + // So startDate and execDate will always be ahead in the future + // and we will never increase the time here + if (execDate.before(new Date()) || !execDate.after(startDate)) { + scheduleTime.add(Calendar.DAY_OF_WEEK, 7); + }; + break; + case MONTHLY: + if(scheduleParts.length < 3){ + throw new CloudRuntimeException("Incorrect schedule format: "+schedule+ " for interval type:"+type.toString()); + } + minutes = Integer.parseInt(scheduleParts[0]); + hour = Integer.parseInt(scheduleParts[1]); day = Integer.parseInt(scheduleParts[2]); if(day > 28){ throw new CloudRuntimeException("Day cannot be greater than 28 for monthly schedule"); - } - scheduleTime.set(Calendar.DAY_OF_MONTH, day); - scheduleTime.set(Calendar.HOUR_OF_DAY, hour); - scheduleTime.set(Calendar.MINUTE, minutes); - scheduleTime.set(Calendar.SECOND, 0); - scheduleTime.set(Calendar.MILLISECOND, 0); - execDate = scheduleTime.getTime(); - // XXX: !execDate.after(startDate) is strictly for testing. - // During testing we use a test clock which runs much faster than the real clock - // So startDate and execDate will always be ahead in the future - // and we will never increase the time here - if (execDate.before(new Date()) || !execDate.after(startDate)) { - scheduleTime.add(Calendar.MONTH, 1); - } - break; - default: - throw new CloudRuntimeException("Incorrect interval: "+type.toString()); - } - - return scheduleTime.getTime(); + } + scheduleTime.set(Calendar.DAY_OF_MONTH, day); + scheduleTime.set(Calendar.HOUR_OF_DAY, hour); + scheduleTime.set(Calendar.MINUTE, minutes); + scheduleTime.set(Calendar.SECOND, 0); + scheduleTime.set(Calendar.MILLISECOND, 0); + execDate = scheduleTime.getTime(); + // XXX: !execDate.after(startDate) is strictly for testing. + // During testing we use a test clock which runs much faster than the real clock + // So startDate and execDate will always be ahead in the future + // and we will never increase the time here + if (execDate.before(new Date()) || !execDate.after(startDate)) { + scheduleTime.add(Calendar.MONTH, 1); + } + break; + default: + throw new CloudRuntimeException("Incorrect interval: "+type.toString()); + } + + return scheduleTime.getTime(); } - // test only + // test only public static void main(String[] args) { - TimeZone localTimezone = Calendar.getInstance().getTimeZone(); - TimeZone gmtTimezone = TimeZone.getTimeZone("GMT"); - TimeZone estTimezone = TimeZone.getTimeZone("EST"); - + TimeZone localTimezone = Calendar.getInstance().getTimeZone(); + TimeZone gmtTimezone = TimeZone.getTimeZone("GMT"); + TimeZone estTimezone = TimeZone.getTimeZone("EST"); + Date time = new Date(); - System.out.println("local time :" + getDateDisplayString(localTimezone, time)); - System.out.println("GMT time :" + getDateDisplayString(gmtTimezone, time)); - System.out.println("EST time :" + getDateDisplayString(estTimezone, time)); - //Test next run time. Expects interval and schedule as arguments - if(args.length == 2) { - System.out.println("Next run time: "+ getNextRunTime(IntervalType.getIntervalType(args[0]), args[1], "GMT", time).toString()); + System.out.println("local time :" + getDateDisplayString(localTimezone, time)); + System.out.println("GMT time :" + getDateDisplayString(gmtTimezone, time)); + System.out.println("EST time :" + getDateDisplayString(estTimezone, time)); + //Test next run time. Expects interval and schedule as arguments + if(args.length == 2) { + System.out.println("Next run time: "+ getNextRunTime(IntervalType.getIntervalType(args[0]), args[1], "GMT", time).toString()); } time = new Date(); @@ -245,6 +245,6 @@ public class DateUtil { System.out.println("Parsed TZ time string : "+ dtParsed.toString()); } catch (ParseException e) { } - } -} - + } +} + diff --git a/utils/src/com/cloud/utils/IdentityProxy.java b/utils/src/com/cloud/utils/IdentityProxy.java index 5c75cb9880a..1338cc1e3a5 100644 --- a/utils/src/com/cloud/utils/IdentityProxy.java +++ b/utils/src/com/cloud/utils/IdentityProxy.java @@ -10,47 +10,47 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -public class IdentityProxy { - private String _tableName; - private Long _value; - private String _idFieldName; - - public IdentityProxy() { - } - - public IdentityProxy(String tableName) { - _tableName = tableName; - } - - public IdentityProxy(String tableName, Long id, String fieldName) { - _tableName = tableName; - _value = id; - _idFieldName = fieldName; - } - - public String getTableName() { - return _tableName; - } - - public void setTableName(String tableName) { - _tableName = tableName; - } - - public Long getValue() { - return _value; - } - - public void setValue(Long value) { - _value = value; - } - - public void setidFieldName(String value) { - _idFieldName = value; - } - - public String getidFieldName() { - return _idFieldName; - } -} +package com.cloud.utils; + +public class IdentityProxy { + private String _tableName; + private Long _value; + private String _idFieldName; + + public IdentityProxy() { + } + + public IdentityProxy(String tableName) { + _tableName = tableName; + } + + public IdentityProxy(String tableName, Long id, String fieldName) { + _tableName = tableName; + _value = id; + _idFieldName = fieldName; + } + + public String getTableName() { + return _tableName; + } + + public void setTableName(String tableName) { + _tableName = tableName; + } + + public Long getValue() { + return _value; + } + + public void setValue(Long value) { + _value = value; + } + + public void setidFieldName(String value) { + _idFieldName = value; + } + + public String getidFieldName() { + return _idFieldName; + } +} diff --git a/utils/src/com/cloud/utils/IteratorUtil.java b/utils/src/com/cloud/utils/IteratorUtil.java index 1dceb49f91c..67fdda6e1b5 100644 --- a/utils/src/com/cloud/utils/IteratorUtil.java +++ b/utils/src/com/cloud/utils/IteratorUtil.java @@ -10,41 +10,41 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -import java.util.Enumeration; -import java.util.Iterator; - -public class IteratorUtil { - public static Iterable enumerationAsIterable(final Enumeration e) { - return new Iterable () { - public Iterator iterator() { - return new Iterator() { - public boolean hasNext() { - return e.hasMoreElements(); - } - - public T next() { - return e.nextElement(); - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - }; - } - - public static Enumeration iteratorAsEnumeration(final Iterator it) { - return new Enumeration() { - public boolean hasMoreElements() { - return it.hasNext(); - } - - public T nextElement() { - return it.next(); - } - }; - } -} +package com.cloud.utils; + +import java.util.Enumeration; +import java.util.Iterator; + +public class IteratorUtil { + public static Iterable enumerationAsIterable(final Enumeration e) { + return new Iterable () { + public Iterator iterator() { + return new Iterator() { + public boolean hasNext() { + return e.hasMoreElements(); + } + + public T next() { + return e.nextElement(); + } + + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + }; + } + + public static Enumeration iteratorAsEnumeration(final Iterator it) { + return new Enumeration() { + public boolean hasMoreElements() { + return it.hasNext(); + } + + public T nextElement() { + return it.next(); + } + }; + } +} diff --git a/utils/src/com/cloud/utils/NumbersUtil.java b/utils/src/com/cloud/utils/NumbersUtil.java index 2d089deead2..fc2d9546cd2 100755 --- a/utils/src/com/cloud/utils/NumbersUtil.java +++ b/utils/src/com/cloud/utils/NumbersUtil.java @@ -10,8 +10,8 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - +package com.cloud.utils; + import java.nio.ByteBuffer; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -19,247 +19,247 @@ import java.util.Date; import java.util.Formatter; import com.cloud.utils.exception.CloudRuntimeException; - -public class NumbersUtil { - public static long parseLong(String s, long defaultValue) { - if (s == null) { - return defaultValue; - } - - try { - return Long.parseLong(s); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - public static int parseInt(String s, int defaultValue) { - if (s == null) { - return defaultValue; - } - try { - return Integer.parseInt(s); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - public static float parseFloat(String s, float defaultValue) { - if (s == null) { - return defaultValue; - } - try { - return Float.parseFloat(s); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - - /** - * Converts bytes to short on input. - */ - public static int bytesToShort(byte b[]) { - return (b[1] & 0xff) | ((b[0] << 8) & 0xff00); - } - - public static int bytesToShort(byte b[], int pos) { - return (b[pos + 1] & 0xff) | ((b[pos] << 8) & 0xff00); - } - - /** - * Converts bytes to long on input. - */ - public static int bytesToInt(byte b[]) { - return bytesToInt(b, 0); - } - - public static int bytesToInt(byte b[], int pos) { - int value = b[pos + 3] & 0xff; - value |= (b[pos + 2] << 8) & 0xff00; - value |= (b[pos + 1] << 16) & 0xff0000; - value |= (b[pos] << 24) & 0xff000000; - return value; - } - - /** - * Converts a short to a series of bytes for output. Must be 2 bytes long. - */ - public static byte[] shortToBytes(int n) { - byte b[] = new byte[2]; - b[1] = (byte) (n & 0xff); - b[0] = (byte) ((n >> 8) & 0xff); - return b; - } - - public static char encodeByte(int b) { - if (b < 10) { - return (char) (b + '0'); - } else if (b < 36) { - return (char) (b - 10 + 'A'); - } else if (b < 62) { - return (char) (b - 36 + 'a'); - } else if (b == 62) { - return '('; - } else if (b == 63) { - return ')'; - } - return (char) 255; - } - - public static int decodeByte(char b) { - if (b >= 'A' && b <= 'Z') { - return b + 10 - 'A'; - } else if (b >= 'a' && b <= 'z') { - return b + 36 - 'a'; - } else if (b >= '0' && b <= '9') { - return b - '0'; - } else if (b == ')') { - return 63; - } else if (b == '(') { - return 62; - } - return -1; - } - - /** - * Converts a long to a series of bytes for output. Must be 4 bytes long. - */ - public static byte[] intToBytes(int n) { - byte b[] = new byte[4]; - b[3] = (byte) (n & 0xff); - b[2] = (byte) ((n >> 8) & 0xff); - b[1] = (byte) ((n >> 16) & 0xff); - b[0] = (byte) ((n >> 24) & 0xff); - return b; - } - - /** - * Sorry for the bad naming but the longToBytes is already taken. Returns an 8 byte long byte array. - **/ - public static byte[] longToBytes(long n) { - byte b[] = new byte[8]; - b[7] = (byte) (n & 0xff); - b[6] = (byte) ((n >> 8) & 0xff); - b[5] = (byte) ((n >> 16) & 0xff); - b[4] = (byte) ((n >> 24) & 0xff); - b[3] = (byte) ((n >> 32) & 0xff); - b[2] = (byte) ((n >> 40) & 0xff); - b[1] = (byte) ((n >> 48) & 0xff); - b[0] = (byte) ((n >> 56) & 0xff); - return b; - } - - /** - * Converts bytes to long on input. - */ - public static long bytesToLong(byte b[]) { - return bytesToLong(b, 0); - } - - public static long bytesToLong(byte b[], int pos) { - ByteBuffer buf = ByteBuffer.wrap(b, pos, 8); - return buf.getLong(); - /* - * long value = b[pos + 7] & 0xff; - * value |= (b[pos + 6] << 8) & 0xff00; - * value |= (b[pos + 5] << 16) & 0xff0000; - * value |= (b[pos + 4] << 24) & 0xff000000; - * value |= (b[pos + 3] << 32) & 0xff00000000; - * value |= (b[pos + 2] << 40) & 0xff0000000000; - * value |= (b[pos + 1] << 48) & 0xff000000000000; - * value |= (b[pos + 0] << 56) & 0xff00000000000000; - * return value; - */ - } - - /** - * Converts a byte array to a hex readable string. - **/ - public static String bytesToString(byte[] data, int start, int end) { - StringBuilder buf = new StringBuilder(); - if (end > data.length) { - end = data.length; - } - for (int i = start; i < end; i++) { - buf.append(" "); - buf.append(Integer.toHexString(data[i] & 0xff)); - } - return buf.toString(); - } - - protected static final long KB = 1024; - protected static final long MB = 1024 * KB; - protected static final long GB = 1024 * MB; - protected static final long TB = 1024 * GB; - public static String toReadableSize(long bytes) { - if (bytes <= KB && bytes >= 0) { - return Long.toString(bytes) + " bytes"; - } else if (bytes <= MB) { - StringBuilder builder = new StringBuilder(); - Formatter format = new Formatter(builder); - format.format("%.2f KB", (float)bytes / (float)KB); - return builder.toString(); - } else if (bytes <= GB) { - StringBuilder builder = new StringBuilder(); - Formatter format = new Formatter(builder); - format.format("%.2f MB", (float)bytes / (float)MB); - return builder.toString(); - } else if (bytes <= TB) { - StringBuilder builder = new StringBuilder(); - Formatter format = new Formatter(builder); - format.format("%.2f GB", (float)bytes / (float)GB); - return builder.toString(); - } else { - StringBuilder builder = new StringBuilder(); - Formatter format = new Formatter(builder); - format.format("%.4f TB", (float)bytes / (float)TB); - return builder.toString(); - } - } - - /** - * Converts a string of the format 'yy-MM-dd'T'HH:mm:ss.SSS" into ms. - * - * @param str containing the interval. - * @param defaultValue value to return if str doesn't parse. If -1, throws VmopsRuntimeException - * @return interval in ms - */ - public static long parseInterval(String str, long defaultValue) { - SimpleDateFormat sdf = null; - if (str.contains("D")) { - sdf = new SimpleDateFormat("dd'D'HH'h'mm'M'ss'S'SSS'ms'"); - } else if (str.contains("h")) { - sdf = new SimpleDateFormat("HH'h'mm'M'ss'S'SSS'ms'"); - } else if (str.contains("M")) { - sdf = new SimpleDateFormat("mm'M'ss'S'SSS'ms'"); - } else if (str.contains("S")) { - sdf = new SimpleDateFormat("ss'S'SSS'ms'"); - } else if (str.contains("ms")) { - sdf = new SimpleDateFormat("SSS'ms'"); - } - Date date; - try { - if (str == null || sdf == null) { - throw new ParseException("String is wrong", 0); - } - date = sdf.parse(str); - return date.getTime(); - } catch (ParseException e) { - if (defaultValue != -1) { - return defaultValue; - } else { - throw new CloudRuntimeException("Unable to parse: " + str, e); - } - } + +public class NumbersUtil { + public static long parseLong(String s, long defaultValue) { + if (s == null) { + return defaultValue; + } + + try { + return Long.parseLong(s); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + public static int parseInt(String s, int defaultValue) { + if (s == null) { + return defaultValue; + } + try { + return Integer.parseInt(s); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + public static float parseFloat(String s, float defaultValue) { + if (s == null) { + return defaultValue; + } + try { + return Float.parseFloat(s); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + + /** + * Converts bytes to short on input. + */ + public static int bytesToShort(byte b[]) { + return (b[1] & 0xff) | ((b[0] << 8) & 0xff00); + } + + public static int bytesToShort(byte b[], int pos) { + return (b[pos + 1] & 0xff) | ((b[pos] << 8) & 0xff00); + } + + /** + * Converts bytes to long on input. + */ + public static int bytesToInt(byte b[]) { + return bytesToInt(b, 0); + } + + public static int bytesToInt(byte b[], int pos) { + int value = b[pos + 3] & 0xff; + value |= (b[pos + 2] << 8) & 0xff00; + value |= (b[pos + 1] << 16) & 0xff0000; + value |= (b[pos] << 24) & 0xff000000; + return value; + } + + /** + * Converts a short to a series of bytes for output. Must be 2 bytes long. + */ + public static byte[] shortToBytes(int n) { + byte b[] = new byte[2]; + b[1] = (byte) (n & 0xff); + b[0] = (byte) ((n >> 8) & 0xff); + return b; + } + + public static char encodeByte(int b) { + if (b < 10) { + return (char) (b + '0'); + } else if (b < 36) { + return (char) (b - 10 + 'A'); + } else if (b < 62) { + return (char) (b - 36 + 'a'); + } else if (b == 62) { + return '('; + } else if (b == 63) { + return ')'; + } + return (char) 255; + } + + public static int decodeByte(char b) { + if (b >= 'A' && b <= 'Z') { + return b + 10 - 'A'; + } else if (b >= 'a' && b <= 'z') { + return b + 36 - 'a'; + } else if (b >= '0' && b <= '9') { + return b - '0'; + } else if (b == ')') { + return 63; + } else if (b == '(') { + return 62; + } + return -1; + } + + /** + * Converts a long to a series of bytes for output. Must be 4 bytes long. + */ + public static byte[] intToBytes(int n) { + byte b[] = new byte[4]; + b[3] = (byte) (n & 0xff); + b[2] = (byte) ((n >> 8) & 0xff); + b[1] = (byte) ((n >> 16) & 0xff); + b[0] = (byte) ((n >> 24) & 0xff); + return b; + } + + /** + * Sorry for the bad naming but the longToBytes is already taken. Returns an 8 byte long byte array. + **/ + public static byte[] longToBytes(long n) { + byte b[] = new byte[8]; + b[7] = (byte) (n & 0xff); + b[6] = (byte) ((n >> 8) & 0xff); + b[5] = (byte) ((n >> 16) & 0xff); + b[4] = (byte) ((n >> 24) & 0xff); + b[3] = (byte) ((n >> 32) & 0xff); + b[2] = (byte) ((n >> 40) & 0xff); + b[1] = (byte) ((n >> 48) & 0xff); + b[0] = (byte) ((n >> 56) & 0xff); + return b; + } + + /** + * Converts bytes to long on input. + */ + public static long bytesToLong(byte b[]) { + return bytesToLong(b, 0); + } + + public static long bytesToLong(byte b[], int pos) { + ByteBuffer buf = ByteBuffer.wrap(b, pos, 8); + return buf.getLong(); + /* + * long value = b[pos + 7] & 0xff; + * value |= (b[pos + 6] << 8) & 0xff00; + * value |= (b[pos + 5] << 16) & 0xff0000; + * value |= (b[pos + 4] << 24) & 0xff000000; + * value |= (b[pos + 3] << 32) & 0xff00000000; + * value |= (b[pos + 2] << 40) & 0xff0000000000; + * value |= (b[pos + 1] << 48) & 0xff000000000000; + * value |= (b[pos + 0] << 56) & 0xff00000000000000; + * return value; + */ + } + + /** + * Converts a byte array to a hex readable string. + **/ + public static String bytesToString(byte[] data, int start, int end) { + StringBuilder buf = new StringBuilder(); + if (end > data.length) { + end = data.length; + } + for (int i = start; i < end; i++) { + buf.append(" "); + buf.append(Integer.toHexString(data[i] & 0xff)); + } + return buf.toString(); + } + + protected static final long KB = 1024; + protected static final long MB = 1024 * KB; + protected static final long GB = 1024 * MB; + protected static final long TB = 1024 * GB; + public static String toReadableSize(long bytes) { + if (bytes <= KB && bytes >= 0) { + return Long.toString(bytes) + " bytes"; + } else if (bytes <= MB) { + StringBuilder builder = new StringBuilder(); + Formatter format = new Formatter(builder); + format.format("%.2f KB", (float)bytes / (float)KB); + return builder.toString(); + } else if (bytes <= GB) { + StringBuilder builder = new StringBuilder(); + Formatter format = new Formatter(builder); + format.format("%.2f MB", (float)bytes / (float)MB); + return builder.toString(); + } else if (bytes <= TB) { + StringBuilder builder = new StringBuilder(); + Formatter format = new Formatter(builder); + format.format("%.2f GB", (float)bytes / (float)GB); + return builder.toString(); + } else { + StringBuilder builder = new StringBuilder(); + Formatter format = new Formatter(builder); + format.format("%.4f TB", (float)bytes / (float)TB); + return builder.toString(); + } + } + + /** + * Converts a string of the format 'yy-MM-dd'T'HH:mm:ss.SSS" into ms. + * + * @param str containing the interval. + * @param defaultValue value to return if str doesn't parse. If -1, throws VmopsRuntimeException + * @return interval in ms + */ + public static long parseInterval(String str, long defaultValue) { + SimpleDateFormat sdf = null; + if (str.contains("D")) { + sdf = new SimpleDateFormat("dd'D'HH'h'mm'M'ss'S'SSS'ms'"); + } else if (str.contains("h")) { + sdf = new SimpleDateFormat("HH'h'mm'M'ss'S'SSS'ms'"); + } else if (str.contains("M")) { + sdf = new SimpleDateFormat("mm'M'ss'S'SSS'ms'"); + } else if (str.contains("S")) { + sdf = new SimpleDateFormat("ss'S'SSS'ms'"); + } else if (str.contains("ms")) { + sdf = new SimpleDateFormat("SSS'ms'"); + } + Date date; + try { + if (str == null || sdf == null) { + throw new ParseException("String is wrong", 0); + } + date = sdf.parse(str); + return date.getTime(); + } catch (ParseException e) { + if (defaultValue != -1) { + return defaultValue; + } else { + throw new CloudRuntimeException("Unable to parse: " + str, e); + } + } } public static int hash(long value) { return (int)(value^(value>>>32)); - } - - public static void main(String[] args) { - long interval = parseInterval(args[0], -1); - System.out.println(args[0] + " is " + interval); - } -} + } + + public static void main(String[] args) { + long interval = parseInterval(args[0], -1); + System.out.println(args[0] + " is " + interval); + } +} diff --git a/utils/src/com/cloud/utils/ProcessUtil.java b/utils/src/com/cloud/utils/ProcessUtil.java index e2a8ccd31fc..b8183901db0 100644 --- a/utils/src/com/cloud/utils/ProcessUtil.java +++ b/utils/src/com/cloud/utils/ProcessUtil.java @@ -10,99 +10,99 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; - -import javax.naming.ConfigurationException; - -import org.apache.log4j.Logger; - +package com.cloud.utils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.naming.ConfigurationException; + +import org.apache.log4j.Logger; + import com.cloud.utils.PropertiesUtil; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.OutputInterpreter; import com.cloud.utils.script.Script; - -import java.util.Properties; - -public class ProcessUtil { - private static final Logger s_logger = Logger.getLogger(ProcessUtil.class.getName()); - - // paths cannot be hardcoded - public static void pidCheck(String pidDir, String run) throws ConfigurationException { - - String dir = pidDir==null?"/var/run":pidDir; - - try { - final File propsFile = PropertiesUtil.findConfigFile("environment.properties"); - if (propsFile == null) { - s_logger.debug("environment.properties could not be opened"); - } - else { - final FileInputStream finputstream = new FileInputStream(propsFile); - final Properties props = new Properties(); - props.load(finputstream); - finputstream.close(); - dir = props.getProperty("paths.pid"); - if (dir == null) { - dir = "/var/run"; - } - } - } catch (IOException e) { - s_logger.debug("environment.properties could not be opened"); - } - - final File pidFile = new File(dir + File.separator + run); - try { - if (!pidFile.createNewFile()) { - if (!pidFile.exists()) { - throw new ConfigurationException("Unable to write to " + pidFile.getAbsolutePath() + ". Are you sure you're running as root?"); - } - - final FileInputStream is = new FileInputStream(pidFile); - final BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - final String pidLine = reader.readLine(); - if (pidLine == null) { - throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); - } - try { - final long pid = Long.parseLong(pidLine); - final Script script = new Script("bash", 120000, s_logger); - script.add("-c", "ps -p " + pid); - final String result = script.execute(); - if (result == null) { - throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); - } - if (!pidFile.delete()) { - throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); - } - if (!pidFile.createNewFile()) { - throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); - } - } catch (final NumberFormatException e) { - throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); - } - } - pidFile.deleteOnExit(); - - final Script script = new Script("bash", 120000, s_logger); - script.add("-c", "echo $PPID"); - final OutputInterpreter.OneLineParser parser = new OutputInterpreter.OneLineParser(); - script.execute(parser); - - final String pid = parser.getLine(); - - final FileOutputStream strm = new FileOutputStream(pidFile); - strm.write((pid + "\n").getBytes()); - strm.close(); - } catch (final IOException e) { - throw new CloudRuntimeException("Unable to create the " + pidFile.getAbsolutePath() + ". Are you running as root?", e); - } + +import java.util.Properties; + +public class ProcessUtil { + private static final Logger s_logger = Logger.getLogger(ProcessUtil.class.getName()); + + // paths cannot be hardcoded + public static void pidCheck(String pidDir, String run) throws ConfigurationException { + + String dir = pidDir==null?"/var/run":pidDir; + + try { + final File propsFile = PropertiesUtil.findConfigFile("environment.properties"); + if (propsFile == null) { + s_logger.debug("environment.properties could not be opened"); + } + else { + final FileInputStream finputstream = new FileInputStream(propsFile); + final Properties props = new Properties(); + props.load(finputstream); + finputstream.close(); + dir = props.getProperty("paths.pid"); + if (dir == null) { + dir = "/var/run"; + } + } + } catch (IOException e) { + s_logger.debug("environment.properties could not be opened"); + } + + final File pidFile = new File(dir + File.separator + run); + try { + if (!pidFile.createNewFile()) { + if (!pidFile.exists()) { + throw new ConfigurationException("Unable to write to " + pidFile.getAbsolutePath() + ". Are you sure you're running as root?"); + } + + final FileInputStream is = new FileInputStream(pidFile); + final BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + final String pidLine = reader.readLine(); + if (pidLine == null) { + throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); + } + try { + final long pid = Long.parseLong(pidLine); + final Script script = new Script("bash", 120000, s_logger); + script.add("-c", "ps -p " + pid); + final String result = script.execute(); + if (result == null) { + throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); + } + if (!pidFile.delete()) { + throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); + } + if (!pidFile.createNewFile()) { + throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); + } + } catch (final NumberFormatException e) { + throw new ConfigurationException("Java process is being started twice. If this is not true, remove " + pidFile.getAbsolutePath()); + } + } + pidFile.deleteOnExit(); + + final Script script = new Script("bash", 120000, s_logger); + script.add("-c", "echo $PPID"); + final OutputInterpreter.OneLineParser parser = new OutputInterpreter.OneLineParser(); + script.execute(parser); + + final String pid = parser.getLine(); + + final FileOutputStream strm = new FileOutputStream(pidFile); + strm.write((pid + "\n").getBytes()); + strm.close(); + } catch (final IOException e) { + throw new CloudRuntimeException("Unable to create the " + pidFile.getAbsolutePath() + ". Are you running as root?", e); + } } public static String dumpStack() { @@ -114,5 +114,5 @@ public class ProcessUtil { } } return sb.toString(); - } -} + } +} diff --git a/utils/src/com/cloud/utils/Profiler.java b/utils/src/com/cloud/utils/Profiler.java index 5031cb4b225..0f88cd48fbb 100644 --- a/utils/src/com/cloud/utils/Profiler.java +++ b/utils/src/com/cloud/utils/Profiler.java @@ -10,32 +10,32 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -public class Profiler { - private Long startTickInMs; - private Long stopTickInMs; - - public Profiler() { - startTickInMs = null; - stopTickInMs = null; - } - - public long start() { - startTickInMs = System.currentTimeMillis(); - return startTickInMs.longValue(); - } - - public long stop() { - stopTickInMs = System.currentTimeMillis(); - return stopTickInMs.longValue(); - } - +package com.cloud.utils; + +public class Profiler { + private Long startTickInMs; + private Long stopTickInMs; + + public Profiler() { + startTickInMs = null; + stopTickInMs = null; + } + + public long start() { + startTickInMs = System.currentTimeMillis(); + return startTickInMs.longValue(); + } + + public long stop() { + stopTickInMs = System.currentTimeMillis(); + return stopTickInMs.longValue(); + } + public long getDuration() { - if(startTickInMs != null && stopTickInMs != null) + if(startTickInMs != null && stopTickInMs != null) return stopTickInMs.longValue() - startTickInMs.longValue(); - return -1; + return -1; } public boolean isStarted() { @@ -55,4 +55,4 @@ public class Profiler { return "Done. Duration: " + getDuration() + "ms"; } -} +} diff --git a/utils/src/com/cloud/utils/SerialVersionUID.java b/utils/src/com/cloud/utils/SerialVersionUID.java index cf4f09f6f6c..83d3af8c61c 100755 --- a/utils/src/com/cloud/utils/SerialVersionUID.java +++ b/utils/src/com/cloud/utils/SerialVersionUID.java @@ -10,39 +10,39 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -/** - * purposes. This is purely on an honor system though. You should always - **/ -public interface SerialVersionUID { - public static final long Base = 0x564D4F70 << 32; // 100 brownie points if you guess what this is and tell me. - - public static final long UUID = Base | 0x1; - public static final long CloudRuntimeException = Base | 0x2; - public static final long CloudStartupServlet = Base | 0x3; +package com.cloud.utils; + +/** + * purposes. This is purely on an honor system though. You should always + **/ +public interface SerialVersionUID { + public static final long Base = 0x564D4F70 << 32; // 100 brownie points if you guess what this is and tell me. + + public static final long UUID = Base | 0x1; + public static final long CloudRuntimeException = Base | 0x2; + public static final long CloudStartupServlet = Base | 0x3; public static final long CloudServiceImpl = Base | 0x4; public static final long AccountLimitException = Base | 0x5; public static final long InsufficientVirtualNetworkCapacityException = Base | 0x7; public static final long NetworkUnavailableException = Base | 0x8; public static final long Ip = Base | 0x9; - public static final long UnsupportedVersionException = Base | 0xb; - public static final long DataCenterIpAddressPK = Base | 0xc; - public static final long UnableToExecuteException = Base | 0xd; - public static final long ExecutionException = Base | 0xe; - public static final long VnetKey = Base | 0xf; - public static final long InsufficientServerCapacityException = Base | 0x10; - public static final long InsufficientAddressCapacityException = Base | 0x11; - public static final long ManagementServerException = Base | 0x12; - public static final long HAStateException = Base | 0x13; - public static final long InsufficientStorageCapacityException = Base | 0x14; - public static final long InsufficientCapacityException = Base | 0x15; - public static final long ConcurrentOperationException = Base | 0x16; - public static final long AgentUnavailableException = Base | 0x17; - public static final long OperationTimedoutException = Base | 0x18; - public static final long StorageUnavailableException = Base | 0x19; + public static final long UnsupportedVersionException = Base | 0xb; + public static final long DataCenterIpAddressPK = Base | 0xc; + public static final long UnableToExecuteException = Base | 0xd; + public static final long ExecutionException = Base | 0xe; + public static final long VnetKey = Base | 0xf; + public static final long InsufficientServerCapacityException = Base | 0x10; + public static final long InsufficientAddressCapacityException = Base | 0x11; + public static final long ManagementServerException = Base | 0x12; + public static final long HAStateException = Base | 0x13; + public static final long InsufficientStorageCapacityException = Base | 0x14; + public static final long InsufficientCapacityException = Base | 0x15; + public static final long ConcurrentOperationException = Base | 0x16; + public static final long AgentUnavailableException = Base | 0x17; + public static final long OperationTimedoutException = Base | 0x18; + public static final long StorageUnavailableException = Base | 0x19; public static final long InfficientVirtualNetworkCapacityException = Base | 0x1a; - public static final long DiscoveryException = Base | 0x1b; + public static final long DiscoveryException = Base | 0x1b; public static final long ConflictingNetworkSettingException = Base | 0x1c; public static final long CloudAuthenticationException = Base | 0x1d; public static final long AsyncCommandQueued = Base | 0x1e; @@ -57,4 +57,4 @@ public interface SerialVersionUID { public static final long CloudExecutionException = Base | 0x27; public static final long CallFailedException = Base | 0x28; public static final long UnableDeleteHostException = Base | 0x29; -} +} diff --git a/utils/src/com/cloud/utils/StringUtils.java b/utils/src/com/cloud/utils/StringUtils.java index 5e8cc891fe8..4354507cdd3 100644 --- a/utils/src/com/cloud/utils/StringUtils.java +++ b/utils/src/com/cloud/utils/StringUtils.java @@ -10,33 +10,33 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - +package com.cloud.utils; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; - -// StringUtils exists in Apache Commons Lang, but rather than import the entire JAR to our system, for now -// just implement the method needed + +// StringUtils exists in Apache Commons Lang, but rather than import the entire JAR to our system, for now +// just implement the method needed public class StringUtils { private static final char[] hexChar = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; - - public static String join(Iterable iterable, String delim) { - StringBuilder sb = new StringBuilder(); - if (iterable != null) { - Iterator iter = iterable.iterator(); - if (iter.hasNext()) { - Object next = iter.next(); - sb.append(next.toString()); - } - while (iter.hasNext()) { - Object next = iter.next(); - sb.append(delim + next.toString()); - } - } - return sb.toString(); + + public static String join(Iterable iterable, String delim) { + StringBuilder sb = new StringBuilder(); + if (iterable != null) { + Iterator iter = iterable.iterator(); + if (iter.hasNext()) { + Object next = iter.next(); + sb.append(next.toString()); + } + while (iter.hasNext()) { + Object next = iter.next(); + sb.append(delim + next.toString()); + } + } + return sb.toString(); } @@ -124,4 +124,4 @@ public class StringUtils { return sb.toString(); } -} +} diff --git a/utils/src/com/cloud/utils/concurrency/SynchronizationEvent.java b/utils/src/com/cloud/utils/concurrency/SynchronizationEvent.java index e6da9a06941..891a4da6696 100644 --- a/utils/src/com/cloud/utils/concurrency/SynchronizationEvent.java +++ b/utils/src/com/cloud/utils/concurrency/SynchronizationEvent.java @@ -10,73 +10,73 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.concurrency; - -import org.apache.log4j.Logger; - -public class SynchronizationEvent { - protected final static Logger s_logger = Logger.getLogger(SynchronizationEvent.class); - - private boolean signalled; - - public SynchronizationEvent() { - signalled = false; - } - - public SynchronizationEvent(boolean signalled) { - this.signalled = signalled; - } - - public void setEvent() { - synchronized(this) { - signalled = true; - notifyAll(); - } - } - - public void resetEvent() { - synchronized(this) { - signalled = false; - } - } - - public boolean waitEvent() throws InterruptedException { - synchronized(this) { - if(signalled) - return true; - - while(true) { - try { - wait(); - assert(signalled); - return signalled; - } catch (InterruptedException e) { - s_logger.debug("unexpected awaken signal in wait()"); - throw e; - } - } - } - } - - public boolean waitEvent(long timeOutMiliseconds) throws InterruptedException { - synchronized(this) { - if(signalled) - return true; - - try { - wait(timeOutMiliseconds); - return signalled; - } catch (InterruptedException e) { - // TODO, we don't honor time out semantics when the waiting thread is interrupted - s_logger.debug("unexpected awaken signal in wait(...)"); - throw e; - } - } - } - - public boolean isSignalled() { - synchronized(this) { - return signalled; - } - } -} +package com.cloud.utils.concurrency; + +import org.apache.log4j.Logger; + +public class SynchronizationEvent { + protected final static Logger s_logger = Logger.getLogger(SynchronizationEvent.class); + + private boolean signalled; + + public SynchronizationEvent() { + signalled = false; + } + + public SynchronizationEvent(boolean signalled) { + this.signalled = signalled; + } + + public void setEvent() { + synchronized(this) { + signalled = true; + notifyAll(); + } + } + + public void resetEvent() { + synchronized(this) { + signalled = false; + } + } + + public boolean waitEvent() throws InterruptedException { + synchronized(this) { + if(signalled) + return true; + + while(true) { + try { + wait(); + assert(signalled); + return signalled; + } catch (InterruptedException e) { + s_logger.debug("unexpected awaken signal in wait()"); + throw e; + } + } + } + } + + public boolean waitEvent(long timeOutMiliseconds) throws InterruptedException { + synchronized(this) { + if(signalled) + return true; + + try { + wait(timeOutMiliseconds); + return signalled; + } catch (InterruptedException e) { + // TODO, we don't honor time out semantics when the waiting thread is interrupted + s_logger.debug("unexpected awaken signal in wait(...)"); + throw e; + } + } + } + + public boolean isSignalled() { + synchronized(this) { + return signalled; + } + } +} diff --git a/utils/src/com/cloud/utils/db/GlobalLock.java b/utils/src/com/cloud/utils/db/GlobalLock.java index 74ae279c238..5c0018ab1ec 100644 --- a/utils/src/com/cloud/utils/db/GlobalLock.java +++ b/utils/src/com/cloud/utils/db/GlobalLock.java @@ -10,91 +10,91 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.db; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.log4j.Logger; - +package com.cloud.utils.db; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.log4j.Logger; + import com.cloud.utils.Profiler; - -// -// Wrapper class for global database lock to reduce contention for database connections from within process -// -// Example of using dynamic named locks -// -// GlobalLock lock = GlobalLock.getInternLock("some table name" + rowId); -// -// if(lock.lock()) { -// try { -// do something -// } finally { -// lock.unlock(); -// } -// } -// lock.releaseRef(); -// -public class GlobalLock { - protected final static Logger s_logger = Logger.getLogger(GlobalLock.class); - - private String name; - private int lockCount = 0; - private Thread ownerThread = null; + +// +// Wrapper class for global database lock to reduce contention for database connections from within process +// +// Example of using dynamic named locks +// +// GlobalLock lock = GlobalLock.getInternLock("some table name" + rowId); +// +// if(lock.lock()) { +// try { +// do something +// } finally { +// lock.unlock(); +// } +// } +// lock.releaseRef(); +// +public class GlobalLock { + protected final static Logger s_logger = Logger.getLogger(GlobalLock.class); + + private String name; + private int lockCount = 0; + private Thread ownerThread = null; - private int referenceCount = 0; - private long holdingStartTick = 0; - - private static Map s_lockMap = new HashMap(); - - private GlobalLock(String name) { - this.name = name; - } - - public int addRef() { - synchronized(this) { - referenceCount++; - return referenceCount; - } - } - - public int releaseRef() { + private int referenceCount = 0; + private long holdingStartTick = 0; + + private static Map s_lockMap = new HashMap(); + + private GlobalLock(String name) { + this.name = name; + } + + public int addRef() { + synchronized(this) { + referenceCount++; + return referenceCount; + } + } + + public int releaseRef() { int refCount; boolean needToRemove = false; - synchronized(this) { - referenceCount--; - refCount = referenceCount; - - if(referenceCount < 0) - s_logger.warn("Unmatched Global lock " + name + " reference usage detected, check your code!"); - + synchronized(this) { + referenceCount--; + refCount = referenceCount; + + if(referenceCount < 0) + s_logger.warn("Unmatched Global lock " + name + " reference usage detected, check your code!"); + if(referenceCount == 0) - needToRemove = true; + needToRemove = true; } if(needToRemove) releaseInternLock(name); - - return refCount; - } + + return refCount; + } - public static GlobalLock getInternLock(String name) { - synchronized(s_lockMap) { - if(s_lockMap.containsKey(name)) { - GlobalLock lock = s_lockMap.get(name); - lock.addRef(); - return lock; - } else { - GlobalLock lock = new GlobalLock(name); - lock.addRef(); - s_lockMap.put(name, lock); - return lock; - } - } - } - - private static void releaseInternLock(String name) { + public static GlobalLock getInternLock(String name) { + synchronized(s_lockMap) { + if(s_lockMap.containsKey(name)) { + GlobalLock lock = s_lockMap.get(name); + lock.addRef(); + return lock; + } else { + GlobalLock lock = new GlobalLock(name); + lock.addRef(); + s_lockMap.put(name, lock); + return lock; + } + } + } + + private static void releaseInternLock(String name) { synchronized(s_lockMap) { GlobalLock lock = s_lockMap.get(name); if(lock != null) { @@ -103,45 +103,45 @@ public class GlobalLock { } else { s_logger.warn("Releasing " + name + ", but it is already released."); } - } - } - - public boolean lock(int timeoutSeconds) { - int remainingMilliSeconds = timeoutSeconds*1000; - Profiler profiler = new Profiler(); - boolean interrupted = false; - try { - while(true) { - synchronized(this) { - if(ownerThread != null && ownerThread == Thread.currentThread()) { - s_logger.warn("Global lock re-entrance detected"); - - lockCount++; - - if(s_logger.isTraceEnabled()) - s_logger.trace("lock " + name + " is acquired, lock count :" + lockCount); - return true; - } - - if(ownerThread != null) { - profiler.start(); - try { - wait(((long)timeoutSeconds)*1000L); - } catch (InterruptedException e) { - interrupted = true; - } - profiler.stop(); - - remainingMilliSeconds -= profiler.getDuration(); - if(remainingMilliSeconds < 0) - return false; - - continue; + } + } + + public boolean lock(int timeoutSeconds) { + int remainingMilliSeconds = timeoutSeconds*1000; + Profiler profiler = new Profiler(); + boolean interrupted = false; + try { + while(true) { + synchronized(this) { + if(ownerThread != null && ownerThread == Thread.currentThread()) { + s_logger.warn("Global lock re-entrance detected"); + + lockCount++; + + if(s_logger.isTraceEnabled()) + s_logger.trace("lock " + name + " is acquired, lock count :" + lockCount); + return true; + } + + if(ownerThread != null) { + profiler.start(); + try { + wait(((long)timeoutSeconds)*1000L); + } catch (InterruptedException e) { + interrupted = true; + } + profiler.stop(); + + remainingMilliSeconds -= profiler.getDuration(); + if(remainingMilliSeconds < 0) + return false; + + continue; } else { - // take ownership temporarily to prevent others enter into stage of acquiring DB lock + // take ownership temporarily to prevent others enter into stage of acquiring DB lock ownerThread = Thread.currentThread(); addRef(); - } + } } if(DbUtil.getGlobalLock(name, remainingMilliSeconds / 1000)) { @@ -160,41 +160,41 @@ public class GlobalLock { return false; } } - } - } finally { - if(interrupted) { - Thread.currentThread().interrupt(); - } - } - } - - public boolean unlock() { - synchronized(this) { - if(ownerThread != null && ownerThread == Thread.currentThread()) { - lockCount--; - if(lockCount == 0) { - ownerThread = null; - DbUtil.releaseGlobalLock(name); - - if(s_logger.isTraceEnabled()) - s_logger.trace("lock " + name + " is returned to free state, total holding time :" + - (System.currentTimeMillis() - holdingStartTick)); - holdingStartTick = 0; - - // release holding position in intern map when we released the DB connection - releaseRef(); - notifyAll(); - } - - if(s_logger.isTraceEnabled()) - s_logger.trace("lock " + name + " is released, lock count :" + lockCount); - return true; - } - return false; - } - } - - public String getName() { - return name; - } -} + } + } finally { + if(interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public boolean unlock() { + synchronized(this) { + if(ownerThread != null && ownerThread == Thread.currentThread()) { + lockCount--; + if(lockCount == 0) { + ownerThread = null; + DbUtil.releaseGlobalLock(name); + + if(s_logger.isTraceEnabled()) + s_logger.trace("lock " + name + " is returned to free state, total holding time :" + + (System.currentTimeMillis() - holdingStartTick)); + holdingStartTick = 0; + + // release holding position in intern map when we released the DB connection + releaseRef(); + notifyAll(); + } + + if(s_logger.isTraceEnabled()) + s_logger.trace("lock " + name + " is released, lock count :" + lockCount); + return true; + } + return false; + } + } + + public String getName() { + return name; + } +} diff --git a/utils/src/com/cloud/utils/db/SearchCriteria2.java b/utils/src/com/cloud/utils/db/SearchCriteria2.java index 50281d7eb57..032425e3f2c 100755 --- a/utils/src/com/cloud/utils/db/SearchCriteria2.java +++ b/utils/src/com/cloud/utils/db/SearchCriteria2.java @@ -10,200 +10,200 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.db; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.persistence.Transient; - -import net.sf.cglib.proxy.Factory; -import net.sf.cglib.proxy.MethodInterceptor; -import net.sf.cglib.proxy.MethodProxy; - -import com.cloud.utils.db.GenericSearchBuilder.Condition; -import com.cloud.utils.db.GenericSearchBuilder.Select; -import com.cloud.utils.db.SearchCriteria.Func; -import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.SearchCriteria.SelectType; - -public class SearchCriteria2 implements SearchCriteriaService, MethodInterceptor{ - GenericDao _dao; - final protected Map _attrs; - protected ArrayList _specifiedAttrs; - protected T _entity; - protected ArrayList _conditions; - protected ArrayList(); - } - - for (Attribute attr : _specifiedAttrs) { - Field field = null; - try { - field = _resultType.getDeclaredField(attr.field.getName()); - field.setAccessible(true); - } catch (SecurityException e) { - } catch (NoSuchFieldException e) { - } - _selects.add(new Select(Func.NATIVE, attr, field, null)); - } - - _specifiedAttrs.clear(); - } - - private void constructCondition(String conditionName, String cond, Attribute attr, Op op) { - assert _entity != null : "SearchBuilder cannot be modified once it has been setup"; - assert op == null || _specifiedAttrs.size() == 1 : "You didn't select the attribute."; - assert op != Op.SC : "Call join"; - - GenericSearchBuilder.Condition condition = new GenericSearchBuilder.Condition(conditionName, cond, attr, op); - _conditions.add(condition); - _specifiedAttrs.clear(); - } - - private void setParameters(String conditionName, Object... params) { - assert _conditions.contains(new Condition(conditionName)) : "Couldn't find " + conditionName; - _params.put(conditionName, params); - } - - @Override - public void addAnd(Object useless, Op op, Object...values) { - String uuid = UUID.randomUUID().toString(); - constructCondition(uuid, " AND ", _specifiedAttrs.get(0), op); - setParameters(uuid, values); - } - - @Override - public List list() { - done(); - SearchCriteria sc1 = createSearchCriteria(); - if (isSelectAll()) { - return (List)_dao.search(sc1, null); - } else { - return (List)_dao.customSearch(sc1, null); - } - } - - private boolean isSelectAll() { - return _selects == null || _selects.size() == 0; - } - - @Override - public T getEntity() { - return (T) _entity; - } - - private SearchCriteria createSearchCriteria() { - return new SearchCriteria(_attrs, _conditions, _selects, _selectType, _resultType, _params); - } - - private void set(String name) { - Attribute attr = _attrs.get(name); - assert (attr != null) : "Searching for a field that's not there: " + name; - _specifiedAttrs.add(attr); - } - - private void done() { - if (_entity != null) { - Factory factory = (Factory)_entity; - factory.setCallback(0, null); - _entity = null; - } - - if (_selects == null || _selects.size() == 0) { - _selectType = SelectType.Entity; - assert _entityBeanType.equals(_resultType) : "Expecting " + _entityBeanType + " because you didn't specify any selects but instead got " + _resultType; - return; - } - - for (Select select : _selects) { - if (select.field == null) { - assert (_selects.size() == 1) : "You didn't specify any fields to put the result in but you're specifying more than one select so where should I put the selects?"; - _selectType = SelectType.Single; - return; - } - if (select.func != null) { - _selectType = SelectType.Result; - return; - } - } - - _selectType = SelectType.Fields; - } - - @Override - public Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { - String name = method.getName(); - if (method.getAnnotation(Transient.class) == null) { - if (name.startsWith("get")) { - String fieldName = Character.toLowerCase(name.charAt(3)) + name.substring(4); - set(fieldName); - return null; - } else if (name.startsWith("is")) { - String fieldName = Character.toLowerCase(name.charAt(2)) + name.substring(3); - set(fieldName); - return null; - } else { - name = name.toLowerCase(); - for (String fieldName : _attrs.keySet()) { - if (name.endsWith(fieldName.toLowerCase())) { - set(fieldName); - return null; - } - } - assert false : "Perhaps you need to make the method start with get or is?"; - } - } - return methodProxy.invokeSuper(object, args); - } - - @Override - public K find() { - assert isSelectAll() : "find doesn't support select search"; - done(); - SearchCriteria sc1 = createSearchCriteria(); - return (K)_dao.findOneBy(sc1); - } - -} +package com.cloud.utils.db; + +import java.io.Serializable; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.persistence.Transient; + +import net.sf.cglib.proxy.Factory; +import net.sf.cglib.proxy.MethodInterceptor; +import net.sf.cglib.proxy.MethodProxy; + +import com.cloud.utils.db.GenericSearchBuilder.Condition; +import com.cloud.utils.db.GenericSearchBuilder.Select; +import com.cloud.utils.db.SearchCriteria.Func; +import com.cloud.utils.db.SearchCriteria.Op; +import com.cloud.utils.db.SearchCriteria.SelectType; + +public class SearchCriteria2 implements SearchCriteriaService, MethodInterceptor{ + GenericDao _dao; + final protected Map _attrs; + protected ArrayList _specifiedAttrs; + protected T _entity; + protected ArrayList _conditions; + protected ArrayList(); + } + + for (Attribute attr : _specifiedAttrs) { + Field field = null; + try { + field = _resultType.getDeclaredField(attr.field.getName()); + field.setAccessible(true); + } catch (SecurityException e) { + } catch (NoSuchFieldException e) { + } + _selects.add(new Select(Func.NATIVE, attr, field, null)); + } + + _specifiedAttrs.clear(); + } + + private void constructCondition(String conditionName, String cond, Attribute attr, Op op) { + assert _entity != null : "SearchBuilder cannot be modified once it has been setup"; + assert op == null || _specifiedAttrs.size() == 1 : "You didn't select the attribute."; + assert op != Op.SC : "Call join"; + + GenericSearchBuilder.Condition condition = new GenericSearchBuilder.Condition(conditionName, cond, attr, op); + _conditions.add(condition); + _specifiedAttrs.clear(); + } + + private void setParameters(String conditionName, Object... params) { + assert _conditions.contains(new Condition(conditionName)) : "Couldn't find " + conditionName; + _params.put(conditionName, params); + } + + @Override + public void addAnd(Object useless, Op op, Object...values) { + String uuid = UUID.randomUUID().toString(); + constructCondition(uuid, " AND ", _specifiedAttrs.get(0), op); + setParameters(uuid, values); + } + + @Override + public List list() { + done(); + SearchCriteria sc1 = createSearchCriteria(); + if (isSelectAll()) { + return (List)_dao.search(sc1, null); + } else { + return (List)_dao.customSearch(sc1, null); + } + } + + private boolean isSelectAll() { + return _selects == null || _selects.size() == 0; + } + + @Override + public T getEntity() { + return (T) _entity; + } + + private SearchCriteria createSearchCriteria() { + return new SearchCriteria(_attrs, _conditions, _selects, _selectType, _resultType, _params); + } + + private void set(String name) { + Attribute attr = _attrs.get(name); + assert (attr != null) : "Searching for a field that's not there: " + name; + _specifiedAttrs.add(attr); + } + + private void done() { + if (_entity != null) { + Factory factory = (Factory)_entity; + factory.setCallback(0, null); + _entity = null; + } + + if (_selects == null || _selects.size() == 0) { + _selectType = SelectType.Entity; + assert _entityBeanType.equals(_resultType) : "Expecting " + _entityBeanType + " because you didn't specify any selects but instead got " + _resultType; + return; + } + + for (Select select : _selects) { + if (select.field == null) { + assert (_selects.size() == 1) : "You didn't specify any fields to put the result in but you're specifying more than one select so where should I put the selects?"; + _selectType = SelectType.Single; + return; + } + if (select.func != null) { + _selectType = SelectType.Result; + return; + } + } + + _selectType = SelectType.Fields; + } + + @Override + public Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { + String name = method.getName(); + if (method.getAnnotation(Transient.class) == null) { + if (name.startsWith("get")) { + String fieldName = Character.toLowerCase(name.charAt(3)) + name.substring(4); + set(fieldName); + return null; + } else if (name.startsWith("is")) { + String fieldName = Character.toLowerCase(name.charAt(2)) + name.substring(3); + set(fieldName); + return null; + } else { + name = name.toLowerCase(); + for (String fieldName : _attrs.keySet()) { + if (name.endsWith(fieldName.toLowerCase())) { + set(fieldName); + return null; + } + } + assert false : "Perhaps you need to make the method start with get or is?"; + } + } + return methodProxy.invokeSuper(object, args); + } + + @Override + public K find() { + assert isSelectAll() : "find doesn't support select search"; + done(); + SearchCriteria sc1 = createSearchCriteria(); + return (K)_dao.findOneBy(sc1); + } + +} diff --git a/utils/src/com/cloud/utils/db/SearchCriteriaService.java b/utils/src/com/cloud/utils/db/SearchCriteriaService.java index 11d494b69e8..4f56a97897d 100755 --- a/utils/src/com/cloud/utils/db/SearchCriteriaService.java +++ b/utils/src/com/cloud/utils/db/SearchCriteriaService.java @@ -10,16 +10,16 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.db; - -import java.util.List; - -import com.cloud.utils.db.SearchCriteria.Op; - -public interface SearchCriteriaService { - public void selectField(Object... useless); - public void addAnd(Object useless, Op op, Object...values); - public List list(); - public T getEntity(); - public K find(); -} +package com.cloud.utils.db; + +import java.util.List; + +import com.cloud.utils.db.SearchCriteria.Op; + +public interface SearchCriteriaService { + public void selectField(Object... useless); + public void addAnd(Object useless, Op op, Object...values); + public List list(); + public T getEntity(); + public K find(); +} diff --git a/utils/src/com/cloud/utils/events/EventArgs.java b/utils/src/com/cloud/utils/events/EventArgs.java index 6c8a05c6914..0c908c4b742 100644 --- a/utils/src/com/cloud/utils/events/EventArgs.java +++ b/utils/src/com/cloud/utils/events/EventArgs.java @@ -10,28 +10,28 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.events; - -import java.io.Serializable; - -public class EventArgs implements Serializable { - private static final long serialVersionUID = 30659016120504139L; - public static EventArgs Empty = new EventArgs(); - - private String subject; - - public EventArgs() { - } - - public EventArgs(String subject) { - this.subject = subject; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } -} +package com.cloud.utils.events; + +import java.io.Serializable; + +public class EventArgs implements Serializable { + private static final long serialVersionUID = 30659016120504139L; + public static EventArgs Empty = new EventArgs(); + + private String subject; + + public EventArgs() { + } + + public EventArgs(String subject) { + this.subject = subject; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } +} diff --git a/utils/src/com/cloud/utils/events/EventsTest.java b/utils/src/com/cloud/utils/events/EventsTest.java index 53774566690..e717af4fbde 100644 --- a/utils/src/com/cloud/utils/events/EventsTest.java +++ b/utils/src/com/cloud/utils/events/EventsTest.java @@ -10,53 +10,53 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.events; - -public class EventsTest { - public void onWeatherChange(Object sender, EventArgs args) { - System.out.println("onWeatherChange, weather: " + ((WeatherChangeEventArgs)args).getWeather()); - } - - public void onTrafficChange(Object sender, EventArgs args) { - System.out.println("onTrafficChange"); - } - - public void run() { - SubscriptionMgr mgr = SubscriptionMgr.getInstance(); - try { - mgr.subscribe("weather", this, "onWeatherChange"); - mgr.subscribe("traffic", this, "onTrafficChange"); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - mgr.notifySubscribers("weather", null, new WeatherChangeEventArgs("weather", "Sunny")); - mgr.notifySubscribers("traffic", null, EventArgs.Empty); - } - - public static void main(String[] args) { - EventsTest test = new EventsTest(); - test.run(); - } -} - -class WeatherChangeEventArgs extends EventArgs { - private static final long serialVersionUID = -952166331523609047L; - - private String weather; - - public WeatherChangeEventArgs() { - } - - public WeatherChangeEventArgs(String subject, String weather) { - super(subject); - this.weather = weather; - } - - public String getWeather() { return weather; } - public void setWeather(String weather) { - this.weather = weather; - } -} +package com.cloud.utils.events; + +public class EventsTest { + public void onWeatherChange(Object sender, EventArgs args) { + System.out.println("onWeatherChange, weather: " + ((WeatherChangeEventArgs)args).getWeather()); + } + + public void onTrafficChange(Object sender, EventArgs args) { + System.out.println("onTrafficChange"); + } + + public void run() { + SubscriptionMgr mgr = SubscriptionMgr.getInstance(); + try { + mgr.subscribe("weather", this, "onWeatherChange"); + mgr.subscribe("traffic", this, "onTrafficChange"); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + mgr.notifySubscribers("weather", null, new WeatherChangeEventArgs("weather", "Sunny")); + mgr.notifySubscribers("traffic", null, EventArgs.Empty); + } + + public static void main(String[] args) { + EventsTest test = new EventsTest(); + test.run(); + } +} + +class WeatherChangeEventArgs extends EventArgs { + private static final long serialVersionUID = -952166331523609047L; + + private String weather; + + public WeatherChangeEventArgs() { + } + + public WeatherChangeEventArgs(String subject, String weather) { + super(subject); + this.weather = weather; + } + + public String getWeather() { return weather; } + public void setWeather(String weather) { + this.weather = weather; + } +} diff --git a/utils/src/com/cloud/utils/events/SubscriptionMgr.java b/utils/src/com/cloud/utils/events/SubscriptionMgr.java index 47518af24a9..035a988a842 100644 --- a/utils/src/com/cloud/utils/events/SubscriptionMgr.java +++ b/utils/src/com/cloud/utils/events/SubscriptionMgr.java @@ -10,155 +10,155 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.events; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.log4j.Logger; - -public class SubscriptionMgr { - protected final static Logger s_logger = Logger.getLogger(SubscriptionMgr.class); - - private static SubscriptionMgr s_instance = new SubscriptionMgr(); - - private Map> registry; - - private SubscriptionMgr() { - registry = new HashMap>(); - } - - public static SubscriptionMgr getInstance() { - return s_instance; - } - - public void subscribe(String subject, T subscriber, String listenerMethod) - throws SecurityException, NoSuchMethodException { - - synchronized(this) { - List l = getAndSetSubscriberList(subject); - - Class clazz = subscriber.getClass(); - SubscriberInfo subscribeInfo = new SubscriberInfo(clazz, subscriber, listenerMethod); - - if(!l.contains(subscribeInfo)) - l.add(subscribeInfo); - } - } - - public void unsubscribe(String subject, T subscriber, String listenerMethod) { - synchronized(this) { - List l = getSubscriberList(subject); - if(l != null) { - for(SubscriberInfo info : l) { - if(info.isMe(subscriber.getClass(), subscriber, listenerMethod)) { - l.remove(info); - return; - } - } - } - } - } - - public void notifySubscribers(String subject, Object sender, EventArgs args) { - - List l = getExecutableSubscriberList(subject); - if(l != null) { - for(SubscriberInfo info : l) { - try { - info.execute(sender, args); - } catch (IllegalArgumentException e) { - s_logger.warn("Exception on notifying event subscribers: ", e); - } catch (IllegalAccessException e) { - s_logger.warn("Exception on notifying event subscribers: ", e); - } catch (InvocationTargetException e) { - s_logger.warn("Exception on notifying event subscribers: ", e); - } - } - } - } - - private List getAndSetSubscriberList(String subject) { - List l = registry.get(subject); - if(l == null) { - l = new ArrayList(); - registry.put(subject, l); - } - - return l; - } - - private List getSubscriberList(String subject) { - return registry.get(subject); - } - - private synchronized List getExecutableSubscriberList(String subject) { - List l = registry.get(subject); - if(l != null) { - // do a shadow clone - ArrayList clonedList = new ArrayList(l.size()); - for(SubscriberInfo info : l) - clonedList.add(info); - - return clonedList; - } - return null; - } - - private static class SubscriberInfo { - private Class clazz; - private Object subscriber; - private String methodName; - private Method method; - - public SubscriberInfo(Class clazz, Object subscriber, String methodName) - throws SecurityException, NoSuchMethodException { - - this.clazz = clazz; - this.subscriber = subscriber; - this.methodName = methodName; - for(Method method : clazz.getMethods()) { - if(method.getName().equals(methodName)) { - Class[] paramTypes = method.getParameterTypes(); - if(paramTypes != null && paramTypes.length == 2 && - paramTypes[0] == Object.class && - EventArgs.class.isAssignableFrom(paramTypes[1])) { - this.method = method; - - break; - } - } - } - if(this.method == null) - throw new NoSuchMethodException(); - } - - public void execute(Object sender, EventArgs args) - throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { - - method.invoke(subscriber, sender, args); - } - - public boolean isMe(Class clazz, Object subscriber, String methodName) { - return this.clazz == clazz && - this.subscriber == subscriber && - this.methodName.equals(methodName); - } - - public boolean equals(Object o) { - if(o == null) - return false; - - if(o instanceof SubscriberInfo) { - return this.clazz == ((SubscriberInfo)o).clazz && - this.subscriber == ((SubscriberInfo)o).subscriber && - this.methodName.equals(((SubscriberInfo)o).methodName); - } - return false; - } - } -} +package com.cloud.utils.events; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +public class SubscriptionMgr { + protected final static Logger s_logger = Logger.getLogger(SubscriptionMgr.class); + + private static SubscriptionMgr s_instance = new SubscriptionMgr(); + + private Map> registry; + + private SubscriptionMgr() { + registry = new HashMap>(); + } + + public static SubscriptionMgr getInstance() { + return s_instance; + } + + public void subscribe(String subject, T subscriber, String listenerMethod) + throws SecurityException, NoSuchMethodException { + + synchronized(this) { + List l = getAndSetSubscriberList(subject); + + Class clazz = subscriber.getClass(); + SubscriberInfo subscribeInfo = new SubscriberInfo(clazz, subscriber, listenerMethod); + + if(!l.contains(subscribeInfo)) + l.add(subscribeInfo); + } + } + + public void unsubscribe(String subject, T subscriber, String listenerMethod) { + synchronized(this) { + List l = getSubscriberList(subject); + if(l != null) { + for(SubscriberInfo info : l) { + if(info.isMe(subscriber.getClass(), subscriber, listenerMethod)) { + l.remove(info); + return; + } + } + } + } + } + + public void notifySubscribers(String subject, Object sender, EventArgs args) { + + List l = getExecutableSubscriberList(subject); + if(l != null) { + for(SubscriberInfo info : l) { + try { + info.execute(sender, args); + } catch (IllegalArgumentException e) { + s_logger.warn("Exception on notifying event subscribers: ", e); + } catch (IllegalAccessException e) { + s_logger.warn("Exception on notifying event subscribers: ", e); + } catch (InvocationTargetException e) { + s_logger.warn("Exception on notifying event subscribers: ", e); + } + } + } + } + + private List getAndSetSubscriberList(String subject) { + List l = registry.get(subject); + if(l == null) { + l = new ArrayList(); + registry.put(subject, l); + } + + return l; + } + + private List getSubscriberList(String subject) { + return registry.get(subject); + } + + private synchronized List getExecutableSubscriberList(String subject) { + List l = registry.get(subject); + if(l != null) { + // do a shadow clone + ArrayList clonedList = new ArrayList(l.size()); + for(SubscriberInfo info : l) + clonedList.add(info); + + return clonedList; + } + return null; + } + + private static class SubscriberInfo { + private Class clazz; + private Object subscriber; + private String methodName; + private Method method; + + public SubscriberInfo(Class clazz, Object subscriber, String methodName) + throws SecurityException, NoSuchMethodException { + + this.clazz = clazz; + this.subscriber = subscriber; + this.methodName = methodName; + for(Method method : clazz.getMethods()) { + if(method.getName().equals(methodName)) { + Class[] paramTypes = method.getParameterTypes(); + if(paramTypes != null && paramTypes.length == 2 && + paramTypes[0] == Object.class && + EventArgs.class.isAssignableFrom(paramTypes[1])) { + this.method = method; + + break; + } + } + } + if(this.method == null) + throw new NoSuchMethodException(); + } + + public void execute(Object sender, EventArgs args) + throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { + + method.invoke(subscriber, sender, args); + } + + public boolean isMe(Class clazz, Object subscriber, String methodName) { + return this.clazz == clazz && + this.subscriber == subscriber && + this.methodName.equals(methodName); + } + + public boolean equals(Object o) { + if(o == null) + return false; + + if(o instanceof SubscriberInfo) { + return this.clazz == ((SubscriberInfo)o).clazz && + this.subscriber == ((SubscriberInfo)o).subscriber && + this.methodName.equals(((SubscriberInfo)o).methodName); + } + return false; + } + } +} diff --git a/utils/src/com/cloud/utils/exception/CSExceptionErrorCode.java b/utils/src/com/cloud/utils/exception/CSExceptionErrorCode.java index 528c191aff3..79e1dc58282 100755 --- a/utils/src/com/cloud/utils/exception/CSExceptionErrorCode.java +++ b/utils/src/com/cloud/utils/exception/CSExceptionErrorCode.java @@ -10,110 +10,110 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.exception; - -import java.util.HashMap; -import org.apache.log4j.Logger; -import org.apache.commons.codec.binary.Base64; - -/** - * CSExceptionErrorCode lists the CloudStack error codes that correspond - */ - -public class CSExceptionErrorCode { - - public static final Logger s_logger = Logger.getLogger(CSExceptionErrorCode.class.getName()); - - // Declare a hashmap of CloudStack Error Codes for Exceptions. - protected static final HashMap ExceptionErrorCodeMap; - - static { - try { - ExceptionErrorCodeMap = new HashMap(); - ExceptionErrorCodeMap.put("com.cloud.utils.exception.CloudRuntimeException", 4250); - ExceptionErrorCodeMap.put("com.cloud.utils.exception.ExceptionUtil", 4255); - ExceptionErrorCodeMap.put("com.cloud.utils.exception.ExecutionException", 4260); - ExceptionErrorCodeMap.put("com.cloud.utils.exception.HypervisorVersionChangedException", 4265); - ExceptionErrorCodeMap.put("com.cloud.utils.exception.RuntimeCloudException", 4270); - ExceptionErrorCodeMap.put("com.cloud.exception.CloudException", 4275); - ExceptionErrorCodeMap.put("com.cloud.exception.AccountLimitException", 4280); - ExceptionErrorCodeMap.put("com.cloud.exception.AgentUnavailableException", 4285); - ExceptionErrorCodeMap.put("com.cloud.exception.CloudAuthenticationException", 4290); - ExceptionErrorCodeMap.put("com.cloud.exception.CloudExecutionException", 4295); - ExceptionErrorCodeMap.put("com.cloud.exception.ConcurrentOperationException", 4300); - ExceptionErrorCodeMap.put("com.cloud.exception.ConflictingNetworkSettingsException", 4305); - ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveredWithErrorException", 4310); - ExceptionErrorCodeMap.put("com.cloud.exception.HAStateException", 4315); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientAddressCapacityException", 4320); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientCapacityException", 4325); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientNetworkCapacityException", 4330); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientServerCapacityException", 4335); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientStorageCapacityException", 4340); - ExceptionErrorCodeMap.put("com.cloud.exception.InternalErrorException", 4345); - ExceptionErrorCodeMap.put("com.cloud.exception.InvalidParameterValueException", 4350); - ExceptionErrorCodeMap.put("com.cloud.exception.ManagementServerException", 4355); - ExceptionErrorCodeMap.put("com.cloud.exception.NetworkRuleConflictException", 4360); - ExceptionErrorCodeMap.put("com.cloud.exception.PermissionDeniedException", 4365); - ExceptionErrorCodeMap.put("com.cloud.exception.ResourceAllocationException", 4370); - ExceptionErrorCodeMap.put("com.cloud.exception.ResourceInUseException", 4375); - ExceptionErrorCodeMap.put("com.cloud.exception.ResourceUnavailableException", 4380); - ExceptionErrorCodeMap.put("com.cloud.exception.StorageUnavailableException", 4385); - ExceptionErrorCodeMap.put("com.cloud.exception.UnsupportedServiceException", 4390); - ExceptionErrorCodeMap.put("com.cloud.exception.VirtualMachineMigrationException", 4395); - - ExceptionErrorCodeMap.put("com.cloud.exception.AccountLimitException", 4400); - ExceptionErrorCodeMap.put("com.cloud.exception.AgentUnavailableException", 4405); - ExceptionErrorCodeMap.put("com.cloud.exception.CloudAuthenticationException", 4410); - ExceptionErrorCodeMap.put("com.cloud.exception.CloudException", 4415); - ExceptionErrorCodeMap.put("com.cloud.exception.CloudExecutionException", 4420); - ExceptionErrorCodeMap.put("com.cloud.exception.ConcurrentOperationException", 4425); - ExceptionErrorCodeMap.put("com.cloud.exception.ConflictingNetworkSettingsException", 4430); - ExceptionErrorCodeMap.put("com.cloud.exception.ConnectionException", 4435); - ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveredWithErrorException", 4440); - ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveryException", 4445); - ExceptionErrorCodeMap.put("com.cloud.exception.HAStateException", 4450); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientAddressCapacityException", 4455); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientCapacityException", 4460); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientNetworkCapacityException", 4465); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientServerCapacityException", 4470); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientStorageCapacityException", 4475); - ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientVirtualNetworkCapcityException", 4480); - ExceptionErrorCodeMap.put("com.cloud.exception.InternalErrorException", 4485); - ExceptionErrorCodeMap.put("com.cloud.exception.InvalidParameterValueException", 4490); - ExceptionErrorCodeMap.put("com.cloud.exception.ManagementServerException", 4495); - ExceptionErrorCodeMap.put("com.cloud.exception.NetworkRuleConflictException", 4500); - ExceptionErrorCodeMap.put("com.cloud.exception.PermissionDeniedException", 4505); - ExceptionErrorCodeMap.put("com.cloud.exception.ResourceAllocationException", 4510); - ExceptionErrorCodeMap.put("com.cloud.exception.ResourceInUseException", 4515); - ExceptionErrorCodeMap.put("com.cloud.exception.ResourceUnavailableException", 4520); - ExceptionErrorCodeMap.put("com.cloud.exception.StorageUnavailableException", 4525); - ExceptionErrorCodeMap.put("com.cloud.exception.UnsupportedServiceException", 4530); - ExceptionErrorCodeMap.put("com.cloud.exception.VirtualMachineMigrationException", 4535); - - // Have a special error code for ServerApiException when it is - // thrown in a standalone manner when failing to detect any of the above - // standard exceptions. - ExceptionErrorCodeMap.put("com.cloud.api.ServerApiException", 9999); - } catch (Exception e) { - throw new ExceptionInInitializerError(e); - } - } - - public static HashMap getErrCodeList() { - return ExceptionErrorCodeMap; - } - - public static int getCSErrCode(String exceptionName) { - if (ExceptionErrorCodeMap.containsKey(exceptionName)) { - return ExceptionErrorCodeMap.get(exceptionName); - } else { - s_logger.info("Could not find exception: " + exceptionName + " in error code list for exceptions"); - return -1; - } - } - - public static String getCurMethodName() { - StackTraceElement stackTraceCalls[] = (new Throwable()).getStackTrace(); - return stackTraceCalls[1].toString(); - } -} +package com.cloud.utils.exception; + +import java.util.HashMap; +import org.apache.log4j.Logger; +import org.apache.commons.codec.binary.Base64; + +/** + * CSExceptionErrorCode lists the CloudStack error codes that correspond + */ + +public class CSExceptionErrorCode { + + public static final Logger s_logger = Logger.getLogger(CSExceptionErrorCode.class.getName()); + + // Declare a hashmap of CloudStack Error Codes for Exceptions. + protected static final HashMap ExceptionErrorCodeMap; + + static { + try { + ExceptionErrorCodeMap = new HashMap(); + ExceptionErrorCodeMap.put("com.cloud.utils.exception.CloudRuntimeException", 4250); + ExceptionErrorCodeMap.put("com.cloud.utils.exception.ExceptionUtil", 4255); + ExceptionErrorCodeMap.put("com.cloud.utils.exception.ExecutionException", 4260); + ExceptionErrorCodeMap.put("com.cloud.utils.exception.HypervisorVersionChangedException", 4265); + ExceptionErrorCodeMap.put("com.cloud.utils.exception.RuntimeCloudException", 4270); + ExceptionErrorCodeMap.put("com.cloud.exception.CloudException", 4275); + ExceptionErrorCodeMap.put("com.cloud.exception.AccountLimitException", 4280); + ExceptionErrorCodeMap.put("com.cloud.exception.AgentUnavailableException", 4285); + ExceptionErrorCodeMap.put("com.cloud.exception.CloudAuthenticationException", 4290); + ExceptionErrorCodeMap.put("com.cloud.exception.CloudExecutionException", 4295); + ExceptionErrorCodeMap.put("com.cloud.exception.ConcurrentOperationException", 4300); + ExceptionErrorCodeMap.put("com.cloud.exception.ConflictingNetworkSettingsException", 4305); + ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveredWithErrorException", 4310); + ExceptionErrorCodeMap.put("com.cloud.exception.HAStateException", 4315); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientAddressCapacityException", 4320); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientCapacityException", 4325); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientNetworkCapacityException", 4330); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientServerCapacityException", 4335); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientStorageCapacityException", 4340); + ExceptionErrorCodeMap.put("com.cloud.exception.InternalErrorException", 4345); + ExceptionErrorCodeMap.put("com.cloud.exception.InvalidParameterValueException", 4350); + ExceptionErrorCodeMap.put("com.cloud.exception.ManagementServerException", 4355); + ExceptionErrorCodeMap.put("com.cloud.exception.NetworkRuleConflictException", 4360); + ExceptionErrorCodeMap.put("com.cloud.exception.PermissionDeniedException", 4365); + ExceptionErrorCodeMap.put("com.cloud.exception.ResourceAllocationException", 4370); + ExceptionErrorCodeMap.put("com.cloud.exception.ResourceInUseException", 4375); + ExceptionErrorCodeMap.put("com.cloud.exception.ResourceUnavailableException", 4380); + ExceptionErrorCodeMap.put("com.cloud.exception.StorageUnavailableException", 4385); + ExceptionErrorCodeMap.put("com.cloud.exception.UnsupportedServiceException", 4390); + ExceptionErrorCodeMap.put("com.cloud.exception.VirtualMachineMigrationException", 4395); + + ExceptionErrorCodeMap.put("com.cloud.exception.AccountLimitException", 4400); + ExceptionErrorCodeMap.put("com.cloud.exception.AgentUnavailableException", 4405); + ExceptionErrorCodeMap.put("com.cloud.exception.CloudAuthenticationException", 4410); + ExceptionErrorCodeMap.put("com.cloud.exception.CloudException", 4415); + ExceptionErrorCodeMap.put("com.cloud.exception.CloudExecutionException", 4420); + ExceptionErrorCodeMap.put("com.cloud.exception.ConcurrentOperationException", 4425); + ExceptionErrorCodeMap.put("com.cloud.exception.ConflictingNetworkSettingsException", 4430); + ExceptionErrorCodeMap.put("com.cloud.exception.ConnectionException", 4435); + ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveredWithErrorException", 4440); + ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveryException", 4445); + ExceptionErrorCodeMap.put("com.cloud.exception.HAStateException", 4450); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientAddressCapacityException", 4455); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientCapacityException", 4460); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientNetworkCapacityException", 4465); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientServerCapacityException", 4470); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientStorageCapacityException", 4475); + ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientVirtualNetworkCapcityException", 4480); + ExceptionErrorCodeMap.put("com.cloud.exception.InternalErrorException", 4485); + ExceptionErrorCodeMap.put("com.cloud.exception.InvalidParameterValueException", 4490); + ExceptionErrorCodeMap.put("com.cloud.exception.ManagementServerException", 4495); + ExceptionErrorCodeMap.put("com.cloud.exception.NetworkRuleConflictException", 4500); + ExceptionErrorCodeMap.put("com.cloud.exception.PermissionDeniedException", 4505); + ExceptionErrorCodeMap.put("com.cloud.exception.ResourceAllocationException", 4510); + ExceptionErrorCodeMap.put("com.cloud.exception.ResourceInUseException", 4515); + ExceptionErrorCodeMap.put("com.cloud.exception.ResourceUnavailableException", 4520); + ExceptionErrorCodeMap.put("com.cloud.exception.StorageUnavailableException", 4525); + ExceptionErrorCodeMap.put("com.cloud.exception.UnsupportedServiceException", 4530); + ExceptionErrorCodeMap.put("com.cloud.exception.VirtualMachineMigrationException", 4535); + + // Have a special error code for ServerApiException when it is + // thrown in a standalone manner when failing to detect any of the above + // standard exceptions. + ExceptionErrorCodeMap.put("com.cloud.api.ServerApiException", 9999); + } catch (Exception e) { + throw new ExceptionInInitializerError(e); + } + } + + public static HashMap getErrCodeList() { + return ExceptionErrorCodeMap; + } + + public static int getCSErrCode(String exceptionName) { + if (ExceptionErrorCodeMap.containsKey(exceptionName)) { + return ExceptionErrorCodeMap.get(exceptionName); + } else { + s_logger.info("Could not find exception: " + exceptionName + " in error code list for exceptions"); + return -1; + } + } + + public static String getCurMethodName() { + StackTraceElement stackTraceCalls[] = (new Throwable()).getStackTrace(); + return stackTraceCalls[1].toString(); + } +} diff --git a/utils/src/com/cloud/utils/exception/RuntimeCloudException.java b/utils/src/com/cloud/utils/exception/RuntimeCloudException.java index 5d6060cacd0..013a3a68d89 100644 --- a/utils/src/com/cloud/utils/exception/RuntimeCloudException.java +++ b/utils/src/com/cloud/utils/exception/RuntimeCloudException.java @@ -10,63 +10,63 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.exception; - -import com.cloud.utils.AnnotationHelper; -import com.cloud.utils.IdentityProxy; -import java.util.ArrayList; - -/** - * by the API response serializer. Any exceptions that are thrown by - * class, which extends Exception instead of RuntimeException like this - * class does. - */ - -public class RuntimeCloudException extends RuntimeException { - - // This holds a list of uuids and their names. Add uuid:fieldname pairs - protected ArrayList idList = new ArrayList(); - - protected int csErrorCode; - - public void addProxyObject(String tableName, Long id, String idFieldName) { - idList.add(new IdentityProxy(tableName, id, idFieldName)); - return; - } - - public RuntimeCloudException(String message) { - super(message); - setCSErrorCode(CSExceptionErrorCode.getCSErrCode(this.getClass().getName())); - } - - public RuntimeCloudException(String message, Throwable cause) { - super(message, cause); - setCSErrorCode(CSExceptionErrorCode.getCSErrCode(this.getClass().getName())); - } - - public void addProxyObject(Object voObj, Long id, String idFieldName) { - // Get the VO object's table name. - String tablename = AnnotationHelper.getTableName(voObj); - if (tablename != null) { - addProxyObject(tablename, id, idFieldName); - } - return; - } - - public RuntimeCloudException() { - super(); - setCSErrorCode(CSExceptionErrorCode.getCSErrCode(this.getClass().getName())); - } - - public ArrayList getIdProxyList() { - return idList; - } - - public void setCSErrorCode(int cserrcode) { - this.csErrorCode = cserrcode; - } - - public int getCSErrorCode() { - return this.csErrorCode; - } -} +package com.cloud.utils.exception; + +import com.cloud.utils.AnnotationHelper; +import com.cloud.utils.IdentityProxy; +import java.util.ArrayList; + +/** + * by the API response serializer. Any exceptions that are thrown by + * class, which extends Exception instead of RuntimeException like this + * class does. + */ + +public class RuntimeCloudException extends RuntimeException { + + // This holds a list of uuids and their names. Add uuid:fieldname pairs + protected ArrayList idList = new ArrayList(); + + protected int csErrorCode; + + public void addProxyObject(String tableName, Long id, String idFieldName) { + idList.add(new IdentityProxy(tableName, id, idFieldName)); + return; + } + + public RuntimeCloudException(String message) { + super(message); + setCSErrorCode(CSExceptionErrorCode.getCSErrCode(this.getClass().getName())); + } + + public RuntimeCloudException(String message, Throwable cause) { + super(message, cause); + setCSErrorCode(CSExceptionErrorCode.getCSErrCode(this.getClass().getName())); + } + + public void addProxyObject(Object voObj, Long id, String idFieldName) { + // Get the VO object's table name. + String tablename = AnnotationHelper.getTableName(voObj); + if (tablename != null) { + addProxyObject(tablename, id, idFieldName); + } + return; + } + + public RuntimeCloudException() { + super(); + setCSErrorCode(CSExceptionErrorCode.getCSErrCode(this.getClass().getName())); + } + + public ArrayList getIdProxyList() { + return idList; + } + + public void setCSErrorCode(int cserrcode) { + this.csErrorCode = cserrcode; + } + + public int getCSErrorCode() { + return this.csErrorCode; + } +} diff --git a/utils/src/com/cloud/utils/net/MacAddress.java b/utils/src/com/cloud/utils/net/MacAddress.java index 6d923586886..38a616265a9 100755 --- a/utils/src/com/cloud/utils/net/MacAddress.java +++ b/utils/src/com/cloud/utils/net/MacAddress.java @@ -10,374 +10,374 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.net; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.Formatter; - +package com.cloud.utils.net; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Formatter; + import com.cloud.utils.NumbersUtil; - -/** - * copied from the public domain utility from John Burkard. - * @author Johann Burkard - * @version 2.1.3 - **/ -public class MacAddress { - private long _addr = 0; - - protected MacAddress() { - } - - public MacAddress(long addr) { - _addr = addr; - } - - public long toLong() { - return _addr; - } - - public byte[] toByteArray() { - byte[] bytes = new byte[6]; - bytes[0] = (byte)((_addr >> 40) & 0xff); - bytes[1] = (byte)((_addr >> 32) & 0xff); - bytes[2] = (byte)((_addr >> 24) & 0xff); - bytes[3] = (byte)((_addr >> 16) & 0xff); - bytes[4] = (byte)((_addr >> 8) & 0xff); - bytes[5] = (byte)((_addr >> 0) & 0xff); - return bytes; - } - - public String toString(String separator) { - StringBuilder buff = new StringBuilder(); - Formatter formatter = new Formatter(buff); - formatter.format("%02x%s%02x%s%02x%s%02x%s%02x%s%02x", - _addr >> 40 & 0xff, separator, - _addr >> 32 & 0xff, separator, - _addr >> 24 & 0xff, separator, - _addr >> 16 & 0xff, separator, - _addr >> 8 & 0xff, separator, - _addr & 0xff); - return buff.toString(); - - /* - - String str = Long.toHexString(_addr); - - for (int i = str.length() - 1; i >= 0; i--) { - buff.append(str.charAt(i)); - if (separator != null && (str.length() - i) % 2 == 0) { - buff.append(separator); - } - } - return buff.reverse().toString(); - */ - } - - @Override - public String toString() { - return toString(":"); - } - - private static MacAddress s_address; - static { - String macAddress = null; - - Process p = null; - BufferedReader in = null; - - try { - String osname = System.getProperty("os.name"); - - if (osname.startsWith("Windows")) { - p = Runtime.getRuntime().exec(new String[] { "ipconfig", "/all"}, null); - } else if (osname.startsWith("Solaris") || osname.startsWith("SunOS")) { - // Solaris code must appear before the generic code - String hostName = MacAddress.getFirstLineOfCommand(new String[] { "uname", - "-n"}); - if (hostName != null) { - p = Runtime.getRuntime().exec(new String[] { "/usr/sbin/arp", hostName}, null); - } - } else if (new File("/usr/sbin/lanscan").exists()) { - p = Runtime.getRuntime().exec(new String[] { "/usr/sbin/lanscan"}, null); - } else if (new File("/sbin/ifconfig").exists()) { - p = Runtime.getRuntime().exec(new String[] { "/sbin/ifconfig", "-a"}, null); - } - - if (p != null) { - in = new BufferedReader(new InputStreamReader(p.getInputStream()), 128); - String l = null; - while ((l = in.readLine()) != null) { - macAddress = MacAddress.parse(l); - if (macAddress != null && MacAddress.parseShort(macAddress) != 0xff) - break; - } - } - - } catch (SecurityException ex) { - } catch (IOException ex) { - } finally { - if (p != null) { - if (in != null) { - try { - in.close(); - } catch (IOException ex) { - } - } - try { - p.getErrorStream().close(); - } catch (IOException ex) { - } - try { - p.getOutputStream().close(); - } catch (IOException ex) { - } - p.destroy(); - } - } - - long clockSeqAndNode = 0; - - if (macAddress != null) { - if (macAddress.indexOf(':') != -1) { - clockSeqAndNode |= MacAddress.parseLong(macAddress); - } else if (macAddress.startsWith("0x")) { - clockSeqAndNode |= MacAddress.parseLong(macAddress.substring(2)); - } - } else { - try { - byte[] local = InetAddress.getLocalHost().getAddress(); - clockSeqAndNode |= (local[0] << 24) & 0xFF000000L; - clockSeqAndNode |= (local[1] << 16) & 0xFF0000; - clockSeqAndNode |= (local[2] << 8) & 0xFF00; - clockSeqAndNode |= local[3] & 0xFF; - } catch (UnknownHostException ex) { - clockSeqAndNode |= (long) (Math.random() * 0x7FFFFFFF); - } - } - - s_address = new MacAddress(clockSeqAndNode); - } - - public static MacAddress getMacAddress() { - return s_address; - } - - private static String getFirstLineOfCommand(String[] commands) throws IOException { - - Process p = null; - BufferedReader reader = null; - - try { - p = Runtime.getRuntime().exec(commands); - reader = new BufferedReader(new InputStreamReader(p.getInputStream()), 128); - - return reader.readLine(); - } finally { - if (p != null) { - if (reader != null) { - try { - reader.close(); - } catch (IOException ex) { - } - } - try { - p.getErrorStream().close(); - } catch (IOException ex) { - } - try { - p.getOutputStream().close(); - } catch (IOException ex) { - } - p.destroy(); - } - } - - } - - /** - * The MAC address parser attempts to find the following patterns: - *
    - *
  • .{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}
  • - *
  • .{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}
  • - *
- * - * This is copied from the author below. The author encouraged copying - * it. - * - */ - static String parse(String in) { - - // lanscan - - int hexStart = in.indexOf("0x"); - if (hexStart != -1) { - int hexEnd = in.indexOf(' ', hexStart); - if (hexEnd != -1) { - return in.substring(hexStart, hexEnd); - } - } - - int octets = 0; - int lastIndex, old, end; - - if (in.indexOf('-') > -1) { - in = in.replace('-', ':'); - } - - lastIndex = in.lastIndexOf(':'); - - if (lastIndex > in.length() - 2) return null; - - end = Math.min(in.length(), lastIndex + 3); - - ++octets; - old = lastIndex; - while (octets != 5 && lastIndex != -1 && lastIndex > 1) { - lastIndex = in.lastIndexOf(':', --lastIndex); - if (old - lastIndex == 3 || old - lastIndex == 2) { - ++octets; - old = lastIndex; - } - } - - if (octets == 5 && lastIndex > 1) { - return in.substring(lastIndex - 2, end).trim(); - } - return null; - } - - public static void main(String[] args) { - MacAddress addr = MacAddress.getMacAddress(); - System.out.println("addr in integer is " + addr.toLong()); - System.out.println("addr in bytes is " + NumbersUtil.bytesToString(addr.toByteArray(), 0, addr.toByteArray().length)); - System.out.println("addr in char is " + addr.toString(":")); - } - -private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', - '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; - - /** - * Parses a long from a hex encoded number. This method will skip - * all characters that are not 0-9 and a-f (the String is lower cased first). - * Returns 0 if the String does not contain any interesting characters. - * - * @param s the String to extract a long from, may not be null - * @return a long - * @throws NullPointerException if the String is null - */ - public static long parseLong(String s) throws NullPointerException { - s = s.toLowerCase(); - long out = 0; - byte shifts = 0; - char c; - for (int i = 0; i < s.length() && shifts < 16; i++) { - c = s.charAt(i); - if ((c > 47) && (c < 58)) { - out <<= 4; - ++shifts; - out |= c - 48; - } - else if ((c > 96) && (c < 103)) { - ++shifts; - out <<= 4; - out |= c - 87; - } - } - return out; - } - - /** - * Parses an int from a hex encoded number. This method will skip - * all characters that are not 0-9 and a-f (the String is lower cased first). - * Returns 0 if the String does not contain any interesting characters. - * - * @param s the String to extract an int from, may not be null - * @return an int - * @throws NullPointerException if the String is null - */ - public static int parseInt(String s) throws NullPointerException { - s = s.toLowerCase(); - int out = 0; - byte shifts = 0; - char c; - for (int i = 0; i < s.length() && shifts < 8; i++) { - c = s.charAt(i); - if ((c > 47) && (c < 58)) { - out <<= 4; - ++shifts; - out |= c - 48; - } - else if ((c > 96) && (c < 103)) { - ++shifts; - out <<= 4; - out |= c - 87; - } - } - return out; - } - - /** - * Parses a short from a hex encoded number. This method will skip - * all characters that are not 0-9 and a-f (the String is lower cased first). - * Returns 0 if the String does not contain any interesting characters. - * - * @param s the String to extract a short from, may not be null - * @return a short - * @throws NullPointerException if the String is null - */ - public static short parseShort(String s) throws NullPointerException { - s = s.toLowerCase(); - short out = 0; - byte shifts = 0; - char c; - for (int i = 0; i < s.length() && shifts < 4; i++) { - c = s.charAt(i); - if ((c > 47) && (c < 58)) { - out <<= 4; - ++shifts; - out |= c - 48; - } - else if ((c > 96) && (c < 103)) { - ++shifts; - out <<= 4; - out |= c - 87; - } - } - return out; - } - - /** - * Parses a byte from a hex encoded number. This method will skip - * all characters that are not 0-9 and a-f (the String is lower cased first). - * Returns 0 if the String does not contain any interesting characters. - * - * @param s the String to extract a byte from, may not be null - * @return a byte - * @throws NullPointerException if the String is null - */ - public static byte parseByte(String s) throws NullPointerException { - s = s.toLowerCase(); - byte out = 0; - byte shifts = 0; - char c; - for (int i = 0; i < s.length() && shifts < 2; i++) { - c = s.charAt(i); - if ((c > 47) && (c < 58)) { - out <<= 4; - ++shifts; - out |= c - 48; - } - else if ((c > 96) && (c < 103)) { - ++shifts; - out <<= 4; - out |= c - 87; - } - } - return out; - } -} + +/** + * copied from the public domain utility from John Burkard. + * @author Johann Burkard + * @version 2.1.3 + **/ +public class MacAddress { + private long _addr = 0; + + protected MacAddress() { + } + + public MacAddress(long addr) { + _addr = addr; + } + + public long toLong() { + return _addr; + } + + public byte[] toByteArray() { + byte[] bytes = new byte[6]; + bytes[0] = (byte)((_addr >> 40) & 0xff); + bytes[1] = (byte)((_addr >> 32) & 0xff); + bytes[2] = (byte)((_addr >> 24) & 0xff); + bytes[3] = (byte)((_addr >> 16) & 0xff); + bytes[4] = (byte)((_addr >> 8) & 0xff); + bytes[5] = (byte)((_addr >> 0) & 0xff); + return bytes; + } + + public String toString(String separator) { + StringBuilder buff = new StringBuilder(); + Formatter formatter = new Formatter(buff); + formatter.format("%02x%s%02x%s%02x%s%02x%s%02x%s%02x", + _addr >> 40 & 0xff, separator, + _addr >> 32 & 0xff, separator, + _addr >> 24 & 0xff, separator, + _addr >> 16 & 0xff, separator, + _addr >> 8 & 0xff, separator, + _addr & 0xff); + return buff.toString(); + + /* + + String str = Long.toHexString(_addr); + + for (int i = str.length() - 1; i >= 0; i--) { + buff.append(str.charAt(i)); + if (separator != null && (str.length() - i) % 2 == 0) { + buff.append(separator); + } + } + return buff.reverse().toString(); + */ + } + + @Override + public String toString() { + return toString(":"); + } + + private static MacAddress s_address; + static { + String macAddress = null; + + Process p = null; + BufferedReader in = null; + + try { + String osname = System.getProperty("os.name"); + + if (osname.startsWith("Windows")) { + p = Runtime.getRuntime().exec(new String[] { "ipconfig", "/all"}, null); + } else if (osname.startsWith("Solaris") || osname.startsWith("SunOS")) { + // Solaris code must appear before the generic code + String hostName = MacAddress.getFirstLineOfCommand(new String[] { "uname", + "-n"}); + if (hostName != null) { + p = Runtime.getRuntime().exec(new String[] { "/usr/sbin/arp", hostName}, null); + } + } else if (new File("/usr/sbin/lanscan").exists()) { + p = Runtime.getRuntime().exec(new String[] { "/usr/sbin/lanscan"}, null); + } else if (new File("/sbin/ifconfig").exists()) { + p = Runtime.getRuntime().exec(new String[] { "/sbin/ifconfig", "-a"}, null); + } + + if (p != null) { + in = new BufferedReader(new InputStreamReader(p.getInputStream()), 128); + String l = null; + while ((l = in.readLine()) != null) { + macAddress = MacAddress.parse(l); + if (macAddress != null && MacAddress.parseShort(macAddress) != 0xff) + break; + } + } + + } catch (SecurityException ex) { + } catch (IOException ex) { + } finally { + if (p != null) { + if (in != null) { + try { + in.close(); + } catch (IOException ex) { + } + } + try { + p.getErrorStream().close(); + } catch (IOException ex) { + } + try { + p.getOutputStream().close(); + } catch (IOException ex) { + } + p.destroy(); + } + } + + long clockSeqAndNode = 0; + + if (macAddress != null) { + if (macAddress.indexOf(':') != -1) { + clockSeqAndNode |= MacAddress.parseLong(macAddress); + } else if (macAddress.startsWith("0x")) { + clockSeqAndNode |= MacAddress.parseLong(macAddress.substring(2)); + } + } else { + try { + byte[] local = InetAddress.getLocalHost().getAddress(); + clockSeqAndNode |= (local[0] << 24) & 0xFF000000L; + clockSeqAndNode |= (local[1] << 16) & 0xFF0000; + clockSeqAndNode |= (local[2] << 8) & 0xFF00; + clockSeqAndNode |= local[3] & 0xFF; + } catch (UnknownHostException ex) { + clockSeqAndNode |= (long) (Math.random() * 0x7FFFFFFF); + } + } + + s_address = new MacAddress(clockSeqAndNode); + } + + public static MacAddress getMacAddress() { + return s_address; + } + + private static String getFirstLineOfCommand(String[] commands) throws IOException { + + Process p = null; + BufferedReader reader = null; + + try { + p = Runtime.getRuntime().exec(commands); + reader = new BufferedReader(new InputStreamReader(p.getInputStream()), 128); + + return reader.readLine(); + } finally { + if (p != null) { + if (reader != null) { + try { + reader.close(); + } catch (IOException ex) { + } + } + try { + p.getErrorStream().close(); + } catch (IOException ex) { + } + try { + p.getOutputStream().close(); + } catch (IOException ex) { + } + p.destroy(); + } + } + + } + + /** + * The MAC address parser attempts to find the following patterns: + *
    + *
  • .{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}
  • + *
  • .{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}
  • + *
+ * + * This is copied from the author below. The author encouraged copying + * it. + * + */ + static String parse(String in) { + + // lanscan + + int hexStart = in.indexOf("0x"); + if (hexStart != -1) { + int hexEnd = in.indexOf(' ', hexStart); + if (hexEnd != -1) { + return in.substring(hexStart, hexEnd); + } + } + + int octets = 0; + int lastIndex, old, end; + + if (in.indexOf('-') > -1) { + in = in.replace('-', ':'); + } + + lastIndex = in.lastIndexOf(':'); + + if (lastIndex > in.length() - 2) return null; + + end = Math.min(in.length(), lastIndex + 3); + + ++octets; + old = lastIndex; + while (octets != 5 && lastIndex != -1 && lastIndex > 1) { + lastIndex = in.lastIndexOf(':', --lastIndex); + if (old - lastIndex == 3 || old - lastIndex == 2) { + ++octets; + old = lastIndex; + } + } + + if (octets == 5 && lastIndex > 1) { + return in.substring(lastIndex - 2, end).trim(); + } + return null; + } + + public static void main(String[] args) { + MacAddress addr = MacAddress.getMacAddress(); + System.out.println("addr in integer is " + addr.toLong()); + System.out.println("addr in bytes is " + NumbersUtil.bytesToString(addr.toByteArray(), 0, addr.toByteArray().length)); + System.out.println("addr in char is " + addr.toString(":")); + } + +private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', + '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + + /** + * Parses a long from a hex encoded number. This method will skip + * all characters that are not 0-9 and a-f (the String is lower cased first). + * Returns 0 if the String does not contain any interesting characters. + * + * @param s the String to extract a long from, may not be null + * @return a long + * @throws NullPointerException if the String is null + */ + public static long parseLong(String s) throws NullPointerException { + s = s.toLowerCase(); + long out = 0; + byte shifts = 0; + char c; + for (int i = 0; i < s.length() && shifts < 16; i++) { + c = s.charAt(i); + if ((c > 47) && (c < 58)) { + out <<= 4; + ++shifts; + out |= c - 48; + } + else if ((c > 96) && (c < 103)) { + ++shifts; + out <<= 4; + out |= c - 87; + } + } + return out; + } + + /** + * Parses an int from a hex encoded number. This method will skip + * all characters that are not 0-9 and a-f (the String is lower cased first). + * Returns 0 if the String does not contain any interesting characters. + * + * @param s the String to extract an int from, may not be null + * @return an int + * @throws NullPointerException if the String is null + */ + public static int parseInt(String s) throws NullPointerException { + s = s.toLowerCase(); + int out = 0; + byte shifts = 0; + char c; + for (int i = 0; i < s.length() && shifts < 8; i++) { + c = s.charAt(i); + if ((c > 47) && (c < 58)) { + out <<= 4; + ++shifts; + out |= c - 48; + } + else if ((c > 96) && (c < 103)) { + ++shifts; + out <<= 4; + out |= c - 87; + } + } + return out; + } + + /** + * Parses a short from a hex encoded number. This method will skip + * all characters that are not 0-9 and a-f (the String is lower cased first). + * Returns 0 if the String does not contain any interesting characters. + * + * @param s the String to extract a short from, may not be null + * @return a short + * @throws NullPointerException if the String is null + */ + public static short parseShort(String s) throws NullPointerException { + s = s.toLowerCase(); + short out = 0; + byte shifts = 0; + char c; + for (int i = 0; i < s.length() && shifts < 4; i++) { + c = s.charAt(i); + if ((c > 47) && (c < 58)) { + out <<= 4; + ++shifts; + out |= c - 48; + } + else if ((c > 96) && (c < 103)) { + ++shifts; + out <<= 4; + out |= c - 87; + } + } + return out; + } + + /** + * Parses a byte from a hex encoded number. This method will skip + * all characters that are not 0-9 and a-f (the String is lower cased first). + * Returns 0 if the String does not contain any interesting characters. + * + * @param s the String to extract a byte from, may not be null + * @return a byte + * @throws NullPointerException if the String is null + */ + public static byte parseByte(String s) throws NullPointerException { + s = s.toLowerCase(); + byte out = 0; + byte shifts = 0; + char c; + for (int i = 0; i < s.length() && shifts < 2; i++) { + c = s.charAt(i); + if ((c > 47) && (c < 58)) { + out <<= 4; + ++shifts; + out |= c - 48; + } + else if ((c > 96) && (c < 103)) { + ++shifts; + out <<= 4; + out |= c - 87; + } + } + return out; + } +} diff --git a/utils/src/com/cloud/utils/script/Script2.java b/utils/src/com/cloud/utils/script/Script2.java index 62199f7b8ce..02cd8cfaba3 100755 --- a/utils/src/com/cloud/utils/script/Script2.java +++ b/utils/src/com/cloud/utils/script/Script2.java @@ -10,56 +10,56 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.script; - - -import java.util.HashMap; -import org.apache.log4j.Logger; - - -public class Script2 extends Script { - HashMap _params = new HashMap(); - - public static enum ParamType { - NORMAL, - PASSWORD, - } - - public Script2(String command, Logger logger) { - this(command, 0, logger); - } - - public Script2(String command, long timeout, Logger logger) { - super(command, timeout, logger); - } - - public void add(String param, ParamType type) { - _params.put(param, type); - super.add(param); - } - - @Override - public void add(String param) { - add(param, ParamType.NORMAL); - } - - private ParamType getType(String cmd) { - return _params.get(cmd); - } - - @Override - protected String buildCommandLine(String[] command) { - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < command.length; i++) { - String cmd = command[i]; - ParamType type = getType(cmd); - if (type == ParamType.PASSWORD) { - builder.append("******").append(" "); - } else { - builder.append(command[i]).append(" "); - } - } - - return builder.toString(); - } -} +package com.cloud.utils.script; + + +import java.util.HashMap; +import org.apache.log4j.Logger; + + +public class Script2 extends Script { + HashMap _params = new HashMap(); + + public static enum ParamType { + NORMAL, + PASSWORD, + } + + public Script2(String command, Logger logger) { + this(command, 0, logger); + } + + public Script2(String command, long timeout, Logger logger) { + super(command, timeout, logger); + } + + public void add(String param, ParamType type) { + _params.put(param, type); + super.add(param); + } + + @Override + public void add(String param) { + add(param, ParamType.NORMAL); + } + + private ParamType getType(String cmd) { + return _params.get(cmd); + } + + @Override + protected String buildCommandLine(String[] command) { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < command.length; i++) { + String cmd = command[i]; + ParamType type = getType(cmd); + if (type == ParamType.PASSWORD) { + builder.append("******").append(" "); + } else { + builder.append(command[i]).append(" "); + } + } + + return builder.toString(); + } +} diff --git a/utils/test/com/cloud/utils/TestProfiler.java b/utils/test/com/cloud/utils/TestProfiler.java index 3d3255b4e87..5a4319f105c 100644 --- a/utils/test/com/cloud/utils/TestProfiler.java +++ b/utils/test/com/cloud/utils/TestProfiler.java @@ -10,32 +10,32 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils; - -import org.apache.log4j.Logger; -import org.junit.Assert; - +package com.cloud.utils; + +import org.apache.log4j.Logger; +import org.junit.Assert; + import com.cloud.utils.Profiler; import com.cloud.utils.testcase.Log4jEnabledTestCase; - -public class TestProfiler extends Log4jEnabledTestCase { - protected final static Logger s_logger = Logger.getLogger(TestProfiler.class); - - public void testProfiler() { - s_logger.info("testProfiler() started"); - - Profiler pf = new Profiler(); - pf.start(); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - pf.stop(); - - s_logger.info("Duration : " + pf.getDuration()); - - Assert.assertTrue(pf.getDuration() >= 1000); - - s_logger.info("testProfiler() stopped"); - } -} + +public class TestProfiler extends Log4jEnabledTestCase { + protected final static Logger s_logger = Logger.getLogger(TestProfiler.class); + + public void testProfiler() { + s_logger.info("testProfiler() started"); + + Profiler pf = new Profiler(); + pf.start(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + pf.stop(); + + s_logger.info("Duration : " + pf.getDuration()); + + Assert.assertTrue(pf.getDuration() >= 1000); + + s_logger.info("testProfiler() stopped"); + } +} diff --git a/utils/test/com/cloud/utils/net/NetUtilsTest.java b/utils/test/com/cloud/utils/net/NetUtilsTest.java index a1b9ba1d720..b059a1871d9 100644 --- a/utils/test/com/cloud/utils/net/NetUtilsTest.java +++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java @@ -10,42 +10,42 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.net; - -import java.util.Set; -import java.util.TreeSet; - -import junit.framework.TestCase; - -import org.junit.Test; - -public class NetUtilsTest extends TestCase { - - @Test - public void testGetRandomIpFromCidr() { - String cidr = "192.168.124.1"; - long ip = NetUtils.getRandomIpFromCidr(cidr, 24, new TreeSet()); - assertEquals("The ip " + NetUtils.long2Ip(ip) + " retrieved must be within the cidr " + cidr + "/24", cidr.substring(0, 12), NetUtils.long2Ip(ip).substring(0, 12)); - - ip = NetUtils.getRandomIpFromCidr(cidr, 16, new TreeSet()); - assertEquals("The ip " + NetUtils.long2Ip(ip) + " retrieved must be within the cidr " + cidr + "/16", cidr.substring(0, 8), NetUtils.long2Ip(ip).substring(0, 8)); - - ip = NetUtils.getRandomIpFromCidr(cidr, 8, new TreeSet()); - assertEquals("The ip " + NetUtils.long2Ip(ip) + " retrieved must be within the cidr " + cidr + "/8", cidr.substring(0, 4), NetUtils.long2Ip(ip).substring(0, 4)); - - Set avoid = new TreeSet(); - ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); - assertTrue("We should be able to retrieve an ip on the first call.", ip != -1); - avoid.add(ip); - ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); - assertTrue("We should be able to retrieve an ip on the second call.", ip != -1); - assertTrue("ip returned is not in the avoid list", !avoid.contains(ip)); - avoid.add(ip); - ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); - assertTrue("We should be able to retrieve an ip on the third call.", ip != -1); - assertTrue("ip returned is not in the avoid list", !avoid.contains(ip)); - avoid.add(ip); - ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); - assertEquals("This should be -1 because we ran out of ip addresses: " + ip, ip, -1); - } -} +package com.cloud.utils.net; + +import java.util.Set; +import java.util.TreeSet; + +import junit.framework.TestCase; + +import org.junit.Test; + +public class NetUtilsTest extends TestCase { + + @Test + public void testGetRandomIpFromCidr() { + String cidr = "192.168.124.1"; + long ip = NetUtils.getRandomIpFromCidr(cidr, 24, new TreeSet()); + assertEquals("The ip " + NetUtils.long2Ip(ip) + " retrieved must be within the cidr " + cidr + "/24", cidr.substring(0, 12), NetUtils.long2Ip(ip).substring(0, 12)); + + ip = NetUtils.getRandomIpFromCidr(cidr, 16, new TreeSet()); + assertEquals("The ip " + NetUtils.long2Ip(ip) + " retrieved must be within the cidr " + cidr + "/16", cidr.substring(0, 8), NetUtils.long2Ip(ip).substring(0, 8)); + + ip = NetUtils.getRandomIpFromCidr(cidr, 8, new TreeSet()); + assertEquals("The ip " + NetUtils.long2Ip(ip) + " retrieved must be within the cidr " + cidr + "/8", cidr.substring(0, 4), NetUtils.long2Ip(ip).substring(0, 4)); + + Set avoid = new TreeSet(); + ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); + assertTrue("We should be able to retrieve an ip on the first call.", ip != -1); + avoid.add(ip); + ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); + assertTrue("We should be able to retrieve an ip on the second call.", ip != -1); + assertTrue("ip returned is not in the avoid list", !avoid.contains(ip)); + avoid.add(ip); + ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); + assertTrue("We should be able to retrieve an ip on the third call.", ip != -1); + assertTrue("ip returned is not in the avoid list", !avoid.contains(ip)); + avoid.add(ip); + ip = NetUtils.getRandomIpFromCidr(cidr, 30, avoid); + assertEquals("This should be -1 because we ran out of ip addresses: " + ip, ip, -1); + } +} diff --git a/utils/test/com/cloud/utils/testcase/ComponentSetup.java b/utils/test/com/cloud/utils/testcase/ComponentSetup.java index 53e7ee42cfb..ac59eb0afe9 100644 --- a/utils/test/com/cloud/utils/testcase/ComponentSetup.java +++ b/utils/test/com/cloud/utils/testcase/ComponentSetup.java @@ -10,15 +10,15 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.testcase; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -@Retention(RetentionPolicy.RUNTIME) -public @interface ComponentSetup { - String managerName(); - String setupXml(); - String log4j() default "log4j-cloud"; -} - +package com.cloud.utils.testcase; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface ComponentSetup { + String managerName(); + String setupXml(); + String log4j() default "log4j-cloud"; +} + diff --git a/utils/test/com/cloud/utils/testcase/ComponentTestCase.java b/utils/test/com/cloud/utils/testcase/ComponentTestCase.java index 49d3554af99..fdc02d1a45b 100644 --- a/utils/test/com/cloud/utils/testcase/ComponentTestCase.java +++ b/utils/test/com/cloud/utils/testcase/ComponentTestCase.java @@ -10,31 +10,31 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.testcase; - +package com.cloud.utils.testcase; + import java.lang.annotation.Annotation; import com.cloud.utils.component.ComponentLocator; - -public class ComponentTestCase extends Log4jEnabledTestCase { + +public class ComponentTestCase extends Log4jEnabledTestCase { @Override - protected void setUp() { - super.setUp(); - - Annotation[] annotations = getClass().getAnnotations(); - if(annotations != null) { - for(Annotation annotation : annotations) { - if(annotation instanceof ComponentSetup) { - ComponentLocator.getLocator( - ((ComponentSetup)annotation).managerName(), + protected void setUp() { + super.setUp(); + + Annotation[] annotations = getClass().getAnnotations(); + if(annotations != null) { + for(Annotation annotation : annotations) { + if(annotation instanceof ComponentSetup) { + ComponentLocator.getLocator( + ((ComponentSetup)annotation).managerName(), ((ComponentSetup)annotation).setupXml(), - ((ComponentSetup)annotation).log4j() - ); - - break; - } - } - } - } -} - + ((ComponentSetup)annotation).log4j() + ); + + break; + } + } + } + } +} + diff --git a/utils/test/com/cloud/utils/testcase/Log4jEnabledTestCase.java b/utils/test/com/cloud/utils/testcase/Log4jEnabledTestCase.java index d657401290a..25e903bb2c8 100644 --- a/utils/test/com/cloud/utils/testcase/Log4jEnabledTestCase.java +++ b/utils/test/com/cloud/utils/testcase/Log4jEnabledTestCase.java @@ -10,34 +10,34 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.utils.testcase; - -import java.io.File; -import java.net.URISyntaxException; -import java.net.URL; +package com.cloud.utils.testcase; + +import java.io.File; +import java.net.URISyntaxException; +import java.net.URL; import java.util.Random; - -import org.apache.log4j.xml.DOMConfigurator; - -import junit.framework.TestCase; - -public class Log4jEnabledTestCase extends TestCase { - protected void setUp() { - URL configUrl = System.class.getResource("/conf/log4j-cloud.xml"); - if(configUrl != null) { - System.out.println("Configure log4j using log4j-cloud.xml"); - - try { - File file = new File(configUrl.toURI()); - - System.out.println("Log4j configuration from : " + file.getAbsolutePath()); - DOMConfigurator.configureAndWatch(file.getAbsolutePath(), 10000); - } catch (URISyntaxException e) { - System.out.println("Unable to convert log4j configuration Url to URI"); - } - } else { - System.out.println("Configure log4j with default properties"); - } + +import org.apache.log4j.xml.DOMConfigurator; + +import junit.framework.TestCase; + +public class Log4jEnabledTestCase extends TestCase { + protected void setUp() { + URL configUrl = System.class.getResource("/conf/log4j-cloud.xml"); + if(configUrl != null) { + System.out.println("Configure log4j using log4j-cloud.xml"); + + try { + File file = new File(configUrl.toURI()); + + System.out.println("Log4j configuration from : " + file.getAbsolutePath()); + DOMConfigurator.configureAndWatch(file.getAbsolutePath(), 10000); + } catch (URISyntaxException e) { + System.out.println("Unable to convert log4j configuration Url to URI"); + } + } else { + System.out.println("Configure log4j with default properties"); + } } public static int getRandomMilliseconds(int rangeLo, int rangeHi) { @@ -47,4 +47,4 @@ public class Log4jEnabledTestCase extends TestCase { long iRange = (long)Integer.MAX_VALUE - (long)Integer.MIN_VALUE; return rangeLo + (int)((rangeHi - rangeLo)*pos/iRange); } -} +}