From c09098ce117d500ff376643d2e9d239c9d1b47db Mon Sep 17 00:00:00 2001 From: Brian Rosenberger Date: Thu, 31 Jan 2013 16:04:41 +0000 Subject: [PATCH] Arbeitsstand Ende Januar 2013 git-svn-id: https://brutex.net/svn/xservices/trunk@97 e7e49efb-446e-492e-b9ec-fcafc1997a86 --- .../xservices/ws/impl/DateServiceImpl.java | 158 ++++++++---------- .../xservices/ws/impl/FileServiceImpl.java | 31 +--- .../xservices/ws/impl/JobServiceImpl.java | 16 +- .../xservices/ws/impl/MiscServiceImpl.java | 63 ++++--- 4 files changed, 108 insertions(+), 160 deletions(-) diff --git a/src/java/net/brutex/xservices/ws/impl/DateServiceImpl.java b/src/java/net/brutex/xservices/ws/impl/DateServiceImpl.java index 62bff0f..c73c5ee 100644 --- a/src/java/net/brutex/xservices/ws/impl/DateServiceImpl.java +++ b/src/java/net/brutex/xservices/ws/impl/DateServiceImpl.java @@ -18,124 +18,125 @@ package net.brutex.xservices.ws.impl; import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; -import java.util.List; import java.util.TimeZone; import javax.jws.WebService; + import net.brutex.xservices.types.DateFormatType; -import net.brutex.xservices.types.DateInfoExtendedType; -import net.brutex.xservices.types.DateInfoType; import net.brutex.xservices.types.DateTimeUnits; -import net.brutex.xservices.types.TimeZoneType; import net.brutex.xservices.util.BrutexNamespaces; import net.brutex.xservices.ws.DateService; import net.brutex.xservices.ws.XServicesFault; + /** * @author Brian Rosenberger - * + * */ -@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.DateService", serviceName = DateService.SERVICE_NAME) +@WebService( + targetNamespace = BrutexNamespaces.WS_XSERVICES, + endpointInterface = "net.brutex.xservices.ws.DateService", + serviceName = DateService.SERVICE_NAME + ) public class DateServiceImpl implements DateService { private static String ERR_INVALIDFORMAT = "Invalid format pattern."; private static String ERR_INVALIDTIMEZONE = "Invalid timezone."; - - public DateInfoType getDate() throws XServicesFault { - GregorianCalendar c = new GregorianCalendar(); - DateInfoType dateinfo = new DateInfoType(c, TimeZone.getDefault()); - return dateinfo; - } - - public DateInfoExtendedType getDateExtended() throws XServicesFault { - GregorianCalendar c = new GregorianCalendar(); - DateInfoExtendedType dateinfo = new DateInfoExtendedType(c, - TimeZone.getDefault()); - return dateinfo; + + public GregorianCalendar getDate(String timezone) throws XServicesFault { + if (! isValidTimezone(timezone) ) { + String valid_ids = ""; + String[] tid = TimeZone.getAvailableIDs(); + for (String s : tid) { + valid_ids += s + "\n"; + } + throw new XServicesFault("Please supply a valid timezone id or none. Valid timezones are:\n" + valid_ids, + new Exception( )); + } + if (timezone == null || timezone.length()<1 ) timezone = "GMT0"; + GregorianCalendar c = new GregorianCalendar(TimeZone.getTimeZone(timezone)); + return c; } + public BigInteger getTimestamp() { Date d = new Date(); long l = d.getTime(); return new BigInteger(Long.toString(l)); } - + public BigInteger getTimestamp2() { Date d = new Date(); - long l = d.getTime() / 1000; + long l = d.getTime()/1000; return new BigInteger(Long.toString(l)); } - public String getInTimezone(Date date, String timezone) - throws XServicesFault { - if (!isValidTimezone(timezone)) - throw new XServicesFault(ERR_INVALIDTIMEZONE); - TimeZone targetzone = TimeZone.getTimeZone(timezone); - String targetstring = DateFormatType.ISO8601.format(date, null, targetzone); - return targetstring; + + public GregorianCalendar getInTimezone(GregorianCalendar cal, + String timezone) throws XServicesFault { + if(! isValidTimezone(timezone)) throw new XServicesFault(ERR_INVALIDTIMEZONE); + GregorianCalendar c = new GregorianCalendar(TimeZone.getTimeZone(timezone)); + c.setTimeInMillis(cal.getTimeInMillis()); + return c; } - - public String formatDate(Date cal, DateFormatType format) - throws XServicesFault { - return format.format(cal, null, null); + + + public String formatDate(GregorianCalendar cal, DateFormatType format) throws XServicesFault { + return formatDateAdvanced(cal, format.format()); } - - public String formatDateAdvanced(Date cal, String format) + + + public String formatDateAdvanced(GregorianCalendar cal, String format) throws XServicesFault { - String result = null; - SimpleDateFormat f = new SimpleDateFormat(format); - result = f.format(cal); + String result= null; + try { + SimpleDateFormat f = new SimpleDateFormat(format); + result = f.format(cal.getTime()); + } catch (IllegalArgumentException e) { + throw new XServicesFault(ERR_INVALIDFORMAT + e.getMessage()); + } return result; } - - public Date parseDate(String s, DateFormatType format, String timezone) - throws XServicesFault { - if (timezone == null | timezone.equals("")) - timezone = TimeZone.getDefault().getID(); - if (!isValidTimezone(timezone)) - throw new XServicesFault(ERR_INVALIDTIMEZONE); - try { - return format.parse(s, null, TimeZone.getTimeZone(timezone)); - } catch (ParseException e) { - throw new XServicesFault(e); - } + + + public GregorianCalendar parseDate(String s, DateFormatType format, String timezone) throws XServicesFault { + return parseDateAdvanced(s, format.format(), timezone); } - public GregorianCalendar parseDateAdvanced(String s, String format, - String timezone) throws XServicesFault { + + public GregorianCalendar parseDateAdvanced(String s, String format, String timezone) throws XServicesFault { SimpleDateFormat f = null; Date date = null; - if (timezone == null | timezone.equals("")) - timezone = TimeZone.getDefault().getID(); - if (!isValidTimezone(timezone)) - throw new XServicesFault(ERR_INVALIDTIMEZONE); - + if(timezone==null | timezone.equals("")) timezone = TimeZone.getDefault().getID(); + if(! isValidTimezone(timezone)) throw new XServicesFault(ERR_INVALIDTIMEZONE); + try { f = new SimpleDateFormat(format); date = f.parse(s); - } catch (IllegalArgumentException e) { + } catch(IllegalArgumentException e) { throw new XServicesFault(ERR_INVALIDFORMAT + e.getMessage()); } catch (ParseException e) { - throw new XServicesFault("Cannot parse date: " + e.getMessage()); + throw new XServicesFault("Cannot parse date: "+ e.getMessage()); } GregorianCalendar cal = new GregorianCalendar(); cal.setTimeZone(TimeZone.getTimeZone(timezone)); cal.setTime(date); return cal; } - - public BigInteger dateTimeDiff(Date fromCal, Date toCal) - throws XServicesFault { - long diff = toCal.getTime() - fromCal.getTime(); + + + public BigInteger dateTimeDiff(GregorianCalendar fromCal, + GregorianCalendar toCal) throws XServicesFault { + long diff = toCal.getTimeInMillis() - fromCal.getTimeInMillis(); BigInteger d = new BigInteger(String.valueOf(diff), 10); return d; } - - public BigInteger dateTimeDiff2(Date fromCal, Date toCal, DateTimeUnits unit) - throws XServicesFault { + + + public BigInteger dateTimeDiff2(GregorianCalendar fromCal, + GregorianCalendar toCal, DateTimeUnits unit) throws XServicesFault { BigInteger d = dateTimeDiff(fromCal, toCal); switch (unit) { case SECONDS: @@ -149,16 +150,13 @@ public class DateServiceImpl implements DateService { break; case DAYS: d = d.divide(new BigInteger("86400000")); - break; - case YEARS: - d = d.divide(new BigInteger("31536000000")); - break; } return d; } - - public GregorianCalendar dateAdd(GregorianCalendar cal, BigInteger value, - DateTimeUnits unit) throws XServicesFault { + + + public GregorianCalendar dateAdd(GregorianCalendar cal, BigInteger value, DateTimeUnits unit) + throws XServicesFault { switch (unit) { case SECONDS: cal.add(GregorianCalendar.SECOND, value.intValue()); @@ -172,19 +170,16 @@ public class DateServiceImpl implements DateService { case DAYS: cal.add(GregorianCalendar.DAY_OF_MONTH, value.intValue()); break; - case YEARS: - cal.add(GregorianCalendar.YEAR, value.intValue()); - break; default: cal.add(GregorianCalendar.MILLISECOND, value.intValue()); } return cal; } - + private boolean isValidTimezone(String id) { boolean yes = false; - for (String s : TimeZone.getAvailableIDs()) { - if (s.equals(id)) { + for( String s: TimeZone.getAvailableIDs()) { + if(s.equals(id)) { yes = true; break; } @@ -192,11 +187,4 @@ public class DateServiceImpl implements DateService { return yes; } - public List getTimezones() { - List output = new ArrayList(); - for (String s : TimeZone.getAvailableIDs()) { - output.add(new TimeZoneType(TimeZone.getTimeZone(s))); - } - return output; - } } diff --git a/src/java/net/brutex/xservices/ws/impl/FileServiceImpl.java b/src/java/net/brutex/xservices/ws/impl/FileServiceImpl.java index f33113f..53f4495 100644 --- a/src/java/net/brutex/xservices/ws/impl/FileServiceImpl.java +++ b/src/java/net/brutex/xservices/ws/impl/FileServiceImpl.java @@ -13,11 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - package net.brutex.xservices.ws.impl; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -30,12 +27,12 @@ import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; +import net.brutex.xservices.types.ArchiveResource; +import net.brutex.xservices.types.AttachmentType; +import net.brutex.xservices.types.FileResource; +import net.brutex.xservices.types.FileSetResource; import net.brutex.xservices.types.ReplacePattern; import net.brutex.xservices.types.ReturnCode; -import net.brutex.xservices.types.ant.ArchiveResource; -import net.brutex.xservices.types.ant.AttachmentType; -import net.brutex.xservices.types.ant.FileResource; -import net.brutex.xservices.types.ant.FileSetResource; import net.brutex.xservices.util.BrutexNamespaces; import net.brutex.xservices.util.RunTask; import net.brutex.xservices.ws.FileService; @@ -158,26 +155,6 @@ public class FileServiceImpl implements FileService { throw new XServicesFault(e); } } - - public byte[] encodeFile(FileResource res) throws XServicesFault { - InputStream is = null; - try { - is = res.getAntResource(null).getInputStream(); - - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - - int nRead; - byte[] data = new byte[4096]; - while ((nRead = is.read(data, 0, data.length)) != -1) { - buffer.write(data, 0, nRead); - } - buffer.flush(); - return buffer.toByteArray(); - - } catch (IOException e) { - throw new XServicesFault(e); - } - } /* * (non-Javadoc) diff --git a/src/java/net/brutex/xservices/ws/impl/JobServiceImpl.java b/src/java/net/brutex/xservices/ws/impl/JobServiceImpl.java index bc92e05..846d966 100644 --- a/src/java/net/brutex/xservices/ws/impl/JobServiceImpl.java +++ b/src/java/net/brutex/xservices/ws/impl/JobServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2012 Brian Rosenberger (Brutex Network) + * Copyright 2011 Brian Rosenberger (Brutex Network) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ package net.brutex.xservices.ws.impl; +import static org.quartz.TriggerBuilder.newTrigger; import java.util.ArrayList; import java.util.GregorianCalendar; @@ -36,9 +37,8 @@ import org.quartz.Trigger; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.GroupMatcher; -import static org.quartz.TriggerBuilder.*; + import net.brutex.xservices.types.ScheduledJob; -import net.brutex.xservices.types.SchedulerStatisticsType; import net.brutex.xservices.util.BrutexNamespaces; import net.brutex.xservices.util.JobWrapper; import net.brutex.xservices.ws.JobService; @@ -148,14 +148,4 @@ public class JobServiceImpl implements JobService { } } - - public SchedulerStatisticsType getStatistics() throws XServicesFault { - try { - Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); - return new SchedulerStatisticsType(scheduler); - } catch (SchedulerException e) { - throw new XServicesFault(e); - } - } - } diff --git a/src/java/net/brutex/xservices/ws/impl/MiscServiceImpl.java b/src/java/net/brutex/xservices/ws/impl/MiscServiceImpl.java index f70b9df..1ffe8cb 100644 --- a/src/java/net/brutex/xservices/ws/impl/MiscServiceImpl.java +++ b/src/java/net/brutex/xservices/ws/impl/MiscServiceImpl.java @@ -18,15 +18,12 @@ package net.brutex.xservices.ws.impl; import java.util.Enumeration; import java.util.Properties; -import java.util.UUID; import javax.jws.WebService; +import net.brutex.xservices.types.FileSetResource; import net.brutex.xservices.types.HostConnection; -import net.brutex.xservices.types.HostinfoType; import net.brutex.xservices.types.MailMimeType; import net.brutex.xservices.types.ReturnCode; -import net.brutex.xservices.types.RuntimeInfoType; -import net.brutex.xservices.types.ant.FileSetResource; import net.brutex.xservices.util.BrutexNamespaces; import net.brutex.xservices.util.RunTask; import net.brutex.xservices.ws.MiscService; @@ -38,31 +35,26 @@ import org.apache.tools.ant.taskdefs.Sleep; import org.apache.tools.ant.taskdefs.email.EmailTask; /** - * Implements the web service * * @author Brian Rosenberger, bru@brutex.de */ -@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, +@WSDLDocumentationCollection({ + @WSDLDocumentation("My portType documentation"), + @WSDLDocumentation(value = "My top level documentation", placement = WSDLDocumentation.Placement.TOP), + @WSDLDocumentation(value = "My binding doc", placement = WSDLDocumentation.Placement.BINDING) }) +@WebService( + targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.MiscService", - serviceName = "MiscService") + serviceName = "MiscService" + ) public class MiscServiceImpl implements MiscService { - public HostinfoType getHostinfo(String hostname) { - HostInfo info = new HostInfo(); - info.setTaskName("HostInfo"); - RunTask runner = new RunTask(info); - info.setHost(hostname); - // info.setPrefix(prefix); - // TODO: Does not work for IP Addresses? - ReturnCode ret = runner.postTask(); - HostinfoType infotype = new HostinfoType( - ret.getProperty("NAME"), - ret.getProperty("DOMAIN"), - ret.getProperty("ADDR4"), - ret.getProperty("ADDR6")); - return infotype; + @WSDLDocumentation(value = "Get information about a host.") + public ReturnCode getHostinfo(String hostname) { + return antGetHostinfo(hostname, null); } - + + @WSDLDocumentation(value = "Get XService information.") public ReturnCode getInfo() { ReturnCode r = new ReturnCode(); r.returnCode = 0; @@ -70,20 +62,20 @@ public class MiscServiceImpl implements MiscService { Properties props = System.getProperties(); // Enumerate all system properties - @SuppressWarnings("unchecked") Enumeration e = (Enumeration) props.propertyNames(); - for (; e.hasMoreElements();) { - // Get property name - String propName = (String) e.nextElement(); + for (; e.hasMoreElements(); ) { + // Get property name + String propName = (String)e.nextElement(); - // Get property value - String propValue = (String) props.get(propName); - r.stdOut = r.stdOut + propName + ": " + propValue + "\n"; + // Get property value + String propValue = (String)props.get(propName); + r.stdOut = r.stdOut + propName + ": " + propValue + "\n"; } return r; } + public ReturnCode sendMailSimple(HostConnection mailhost, String from, String tolist, String subject, String message) { return sendMail(from, from, tolist, "", "", subject, message, @@ -112,8 +104,13 @@ public class MiscServiceImpl implements MiscService { return sleep(0, minutes, seconds, 0); } - public String generateUUID() { - return UUID.randomUUID().toString(); + private ReturnCode antGetHostinfo(String hostname, String prefix) { + HostInfo info = new HostInfo(); + info.setTaskName("HostInfo"); + RunTask runner = new RunTask(info); + info.setHost(hostname); + // info.setPrefix(prefix); + return runner.postTask(); } private ReturnCode sendMail(String from, String replyto, String tolist, @@ -156,8 +153,4 @@ public class MiscServiceImpl implements MiscService { sleep.setMilliseconds(milliseconds); return runner.postTask(); } - - public RuntimeInfoType getMemory() { - return new RuntimeInfoType(); - } }