/xservices/trunk/src/java/net/brutex/xservices/ws/rs/ResultType.java |
---|
0,0 → 1,18 |
package net.brutex.xservices.ws.rs; |
import net.brutex.xservices.types.scm.ItemType; |
class ResultType |
{ |
private ItemType result = null; |
ItemType getResult() |
{ |
return this.result; |
} |
void setResult(ItemType result) |
{ |
this.result = result; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/CVSInfo.java |
---|
0,0 → 1,47 |
package net.brutex.xservices.ws.rs; |
import java.io.File; |
import javax.ws.rs.DefaultValue; |
import javax.ws.rs.GET; |
import javax.ws.rs.Path; |
import javax.ws.rs.Produces; |
import javax.ws.rs.QueryParam; |
import javax.ws.rs.core.Context; |
import javax.ws.rs.core.HttpHeaders; |
import javax.ws.rs.core.Response; |
@Path("/CVSService/") |
@Produces({"application/xml", "application/json"}) |
public abstract interface CVSInfo |
{ |
public static final String WS_OPERATION_GETREPOSITORYFILES = "getRepositoryFiles"; |
public static final String WS_OPERATION_GETMODULES = "getModules"; |
public static final String WS_OPERATION_GETTAGS = "getTags"; |
public static final String WS_OPERATION_GETFILECONTENT = "getFileContent"; |
public static final String WS_OPERATION_SEARCHFILECONTENT = "searchFileContent"; |
@GET |
@Path("getRepositoryFiles") |
public abstract Response getRepositoryFiles(@Context HttpHeaders paramHttpHeaders, @QueryParam("config") File paramFile, @QueryParam("modules") @DefaultValue("") String paramString, @QueryParam("recursive") @DefaultValue("false") boolean paramBoolean1, @QueryParam("showRevisions") @DefaultValue("false") boolean paramBoolean2, @QueryParam("forceNoCache") @DefaultValue("false") boolean paramBoolean3); |
@GET |
@Path("getModules") |
public abstract Response getModules(@Context HttpHeaders paramHttpHeaders, @QueryParam("config") File paramFile, @QueryParam("forceNoCache") @DefaultValue("false") boolean paramBoolean); |
@GET |
@Path("getTags") |
public abstract Response getTags(@Context HttpHeaders paramHttpHeaders, @QueryParam("config") File paramFile, @QueryParam("withFiles") @DefaultValue("false") boolean paramBoolean); |
@GET |
@Path("getFileContent") |
public abstract Response getFileContent(@Context HttpHeaders paramHttpHeaders, @QueryParam("config") File paramFile, @QueryParam("file") String paramString, @QueryParam("forceNoCache") @DefaultValue("false") boolean paramBoolean); |
@GET |
@Path("searchFileContent") |
public abstract Response searchFileContent(@Context HttpHeaders paramHttpHeaders, @QueryParam("config") File paramFile, @QueryParam("file_regexp") String paramString1, @QueryParam("content_regexp") String paramString2, @QueryParam("forceNoCache") @DefaultValue("false") boolean paramBoolean); |
} |
/* Location: C:\Users\brosenberger\Documents\My Box Files\XBridgeNG-download\XServices-20130131 - Kopie\WEB-INF\classes\net.zip |
* Qualified Name: net.brutex.xservices.ws.rs.CVSInfo |
* JD-Core Version: 0.6.2 |
*/ |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/CVSInfoImpl.java |
---|
0,0 → 1,377 |
package net.brutex.xservices.ws.rs; |
import java.io.ByteArrayOutputStream; |
import java.io.File; |
import java.io.FileReader; |
import java.io.IOException; |
import java.io.PrintStream; |
import java.net.URI; |
import java.util.List; |
import java.util.StringTokenizer; |
import javax.ws.rs.core.HttpHeaders; |
import javax.ws.rs.core.Response; |
import javax.ws.rs.core.Response.ResponseBuilder; |
import net.brutex.xservices.types.scm.AttributeType; |
import net.brutex.xservices.types.scm.ItemListType; |
import net.brutex.xservices.types.scm.ItemType; |
import net.brutex.xservices.types.scm.ModuleListType; |
import net.brutex.xservices.types.scm.ModuleType; |
import net.brutex.xservices.types.scm.ObjectFactory; |
import net.brutex.xservices.types.scm.RevisionType; |
import net.brutex.xservices.types.scm.TagListType; |
import net.brutex.xservices.types.scmfindings.FindingsListType; |
import net.brutex.xservices.util.BasicCVSListener; |
import net.brutex.xservices.util.CVSClient; |
import net.brutex.xservices.util.CVSRoot; |
import org.apache.commons.configuration.ConfigurationException; |
import org.apache.jcs.JCS; |
import org.apache.jcs.access.exception.CacheException; |
import org.apache.log4j.Logger; |
import org.netbeans.lib.cvsclient.Client; |
import org.netbeans.lib.cvsclient.command.CommandAbortedException; |
import org.netbeans.lib.cvsclient.command.CommandException; |
import org.netbeans.lib.cvsclient.command.FileInfoContainer; |
import org.netbeans.lib.cvsclient.command.PipedFileInformation; |
import org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand; |
import org.netbeans.lib.cvsclient.command.checkout.ModuleListInformation; |
import org.netbeans.lib.cvsclient.command.log.LogInformation; |
import org.netbeans.lib.cvsclient.command.log.LogInformation.Revision; |
import org.netbeans.lib.cvsclient.command.log.RlogCommand; |
import org.netbeans.lib.cvsclient.connection.AuthenticationException; |
import org.netbeans.lib.cvsclient.event.EventManager; |
import org.netbeans.lib.cvsclient.event.FileInfoEvent; |
public class CVSInfoImpl implements CVSInfo { |
final Logger logger = Logger.getLogger(CVSInfoImpl.class); |
final ObjectFactory FACTORY = new ObjectFactory(); |
final ItemListType list = this.FACTORY.createItemListType(); |
public Response getRepositoryFiles(HttpHeaders h, File f, String modules, |
boolean isRecursive, boolean showRevisions, boolean forceNoCache) { |
String cachekey = "getFiles" + f.toURI().toString(); |
this.logger.debug("forceNoCache=" + forceNoCache); |
ItemListType cacheresult = (ItemListType) getCacheInstance().get( |
cachekey); |
if ((!forceNoCache) && (cacheresult != null)) { |
return Response.ok(cacheresult).build(); |
} |
Client client; |
try { |
final CVSClient cvsclient = new CVSClient(f); |
client = cvsclient.client; |
client.getEventManager().addCVSListener(new BasicCVSListener() { |
public void fileInfoGenerated(FileInfoEvent arg0) { |
LogInformation info = (LogInformation) arg0 |
.getInfoContainer(); |
String repoPath = cvsclient.client.getRepository(); |
ItemType cvsfile = CVSInfoImpl.this.FACTORY |
.createItemType(); |
cvsfile.setIsLeaf(true); |
cvsfile.setIsBinary(false); |
cvsfile.setFullname(info.getRepositoryFilename().substring( |
repoPath.length() + 2, |
info.getRepositoryFilename().length() - 2)); |
cvsfile.setRemotename(info.getRepositoryFilename()); |
cvsfile.setRemotefullname(info.getRepositoryFilename()); |
RevisionType revision = CVSInfoImpl.this.FACTORY |
.createRevisionType(); |
revision.setRevision(info.getHeadRevision()); |
revision.setComment(info.getDescription()); |
cvsfile.setTipRevision(revision); |
for (LogInformation.Revision r : info.getRevisionList()) { |
revision = CVSInfoImpl.this.FACTORY |
.createRevisionType(); |
revision.setRevision(r.getNumber()); |
revision.setComment(r.getMessage()); |
cvsfile.getRevisions().add(revision); |
} |
cvsfile.getAttributes().add( |
CVSInfoImpl.this.getAttribute("TOTALREVISIONS", |
info.getTotalRevisions())); |
cvsfile.getAttributes().add( |
CVSInfoImpl.this.getAttribute("BRANCH", |
info.getBranch())); |
cvsfile.getAttributes().add( |
CVSInfoImpl.this.getAttribute( |
"KEYWORDSUBSTITUTION", |
info.getKeywordSubstitution())); |
cvsfile.getAttributes().add( |
CVSInfoImpl.this.getAttribute("LOCKS", |
info.getLocks())); |
cvsfile.getAttributes().add( |
CVSInfoImpl.this.getAttribute("SELECTEDREVISIONS", |
info.getSelectedRevisions())); |
cvsfile.setROOT(cvsclient.getRoot().host + "@" |
+ cvsclient.getRoot().repository); |
CVSInfoImpl.this.list.getItems().add(cvsfile); |
String key = CVSClient.generateID(cvsfile); |
try { |
CVSInfoImpl.this.getCacheInstance().put(key, cvsfile); |
} catch (CacheException e) { |
CVSInfoImpl.this.logger.error("Could not cache item '" |
+ key + "'", e); |
} |
} |
}); |
RlogCommand rlog = new RlogCommand(); |
StringTokenizer tk = new StringTokenizer(modules, ","); |
while (tk.hasMoreTokens()) { |
rlog.setModule(tk.nextToken()); |
} |
if (rlog.getModules().length == 0) { |
rlog.setModule(""); |
} |
rlog.setDefaultBranch(false); |
rlog.setNoTags(false); |
rlog.setHeaderAndDescOnly(false); |
rlog.setRecursive(isRecursive); |
this.logger.info("Executing CVS command '" + rlog.getCVSCommand() |
+ "' against '" + cvsclient.getRoot().host + "@" |
+ cvsclient.getRoot().repository + "'"); |
client.executeCommand(rlog, cvsclient.getGlobalOptions()); |
getCacheInstance().put(cachekey, this.list); |
} catch (ConfigurationException e) { |
this.logger.error("CVS Configuration File '" + f.getAbsolutePath() |
+ f.getName() + "'not found.", e); |
} catch (CommandAbortedException e) { |
e.printStackTrace(); |
} catch (AuthenticationException e) { |
e.printStackTrace(); |
} catch (CommandException e) { |
e.printStackTrace(); |
} catch (CacheException e) { |
e.printStackTrace(); |
} |
if (!showRevisions) { |
for (ItemType t : this.list.getItems()) { |
t.getRevisions().clear(); |
} |
} |
return Response.ok(this.list).build(); |
} |
public Response getModules(HttpHeaders h, File f, boolean forceNoCache) { |
String cachekey = "Modules" + f.toURI().toString(); |
this.logger.debug("forceNoCache=" + forceNoCache); |
ModuleListType response = (ModuleListType) getCacheInstance().get( |
cachekey); |
if ((!forceNoCache) && (response != null)) { |
return Response.ok(response).build(); |
} |
try { |
CVSClient cvsclient = new CVSClient(f); |
Client client = cvsclient.client; |
final ModuleListType list = this.FACTORY.createModuleListType(); |
client.getEventManager().addCVSListener(new BasicCVSListener() { |
public void fileInfoGenerated(FileInfoEvent e) { |
ModuleListInformation info = (ModuleListInformation) e |
.getInfoContainer(); |
ModuleType module = CVSInfoImpl.this.FACTORY |
.createModuleType(); |
module.setName(info.getModuleName()); |
module.setStatus(info.getModuleStatus()); |
module.setPath(info.getPaths()); |
module.setType(info.getType()); |
list.getModules().add(module); |
} |
}); |
CheckoutCommand co = new CheckoutCommand(); |
co.setShowModulesWithStatus(true); |
this.logger.info("Executing CVS command '" + co.getCVSCommand() |
+ "' against '" + cvsclient.getRoot().host + "@" |
+ cvsclient.getRoot().repository + "'"); |
client.executeCommand(co, cvsclient.getGlobalOptions()); |
if (list.getModules().size() == 0) { |
this.logger.warn("Repository '" |
+ cvsclient.getRoot().repository |
+ "' does not have modules"); |
} |
getCacheInstance().put(cachekey, list); |
return Response.ok(list).build(); |
} catch (Exception e) { |
e.printStackTrace(); |
} |
return Response.serverError().build(); |
} |
public Response getTags(HttpHeaders h, File f, boolean withFiles) { |
String cachekey = f.toURI().toString() + ":taglist"; |
this.logger.debug("Retrieving Tags from cache using key '" + cachekey |
+ "'"); |
TagListType tags = (TagListType) getCacheInstance().get(cachekey); |
if (tags != null) { |
this.logger.debug("Delivering Tags from cache."); |
return Response.ok(tags).build(); |
} |
this.logger.warn("Taglist not found in cache."); |
return Response.noContent().build(); |
} |
public Response getFileContent(HttpHeaders h, File f, String filestring, |
boolean forceNoCache) { |
final ItemType result = this.FACTORY.createItemType(); |
final String cachekey = f.toURI().toString() + ":" + filestring |
+ ":content"; |
ItemListType list = null; |
if (!forceNoCache) { |
this.logger.debug("Retrieving file content from cache using key '" |
+ cachekey + "'"); |
list = (ItemListType) getCacheInstance().get(cachekey); |
} |
if (list != null) { |
this.logger.debug("Delivering file content from cache."); |
return Response.ok(list).build(); |
} |
this.logger.warn("File content not found in cache."); |
list = this.FACTORY.createItemListType(); |
try { |
CVSClient cvsclient = new CVSClient(f); |
Client client = cvsclient.getClient(); |
CheckoutCommand checkout = new CheckoutCommand(); |
BasicCVSListener listener = new BasicCVSListener() { |
public void fileInfoGenerated(FileInfoEvent arg0) { |
System.out.println(arg0.getInfoContainer().getFile() |
.toURI().toString()); |
PipedFileInformation info = (PipedFileInformation) arg0 |
.getInfoContainer(); |
result.setName(info.getFile().getName()); |
try { |
boolean isBinary = false; |
result.setIsBinary(isBinary); |
result.setRemotename(info.getRepositoryFileName()); |
RevisionType revision = CVSInfoImpl.this.FACTORY |
.createRevisionType(); |
revision.setRevision(info.getRepositoryRevision()); |
revision.setComment(""); |
if (!isBinary) { |
FileReader fin = new FileReader(info.getTempFile()); |
ByteArrayOutputStream bout = new ByteArrayOutputStream(); |
StringBuffer sbuf = new StringBuffer(); |
int c; |
while ((c = fin.read()) != -1) { |
bout.write(c); |
sbuf.append((char) c); |
} |
result.setData(bout.toByteArray()); |
result.setContent(sbuf.toString()); |
} |
} catch (IOException e2) { |
e2.printStackTrace(); |
} catch (NullPointerException ne) { |
ne.printStackTrace(); |
} |
String key = CVSClient.generateID(result); |
try { |
CVSInfoImpl.this.getCacheInstance().put(cachekey, |
result); |
} catch (CacheException e1) { |
e1.printStackTrace(); |
} |
} |
}; |
client.getEventManager().addCVSListener(listener); |
checkout.setModule(filestring); |
checkout.setPipeToOutput(true); |
this.logger.info("Execute CVS command '" + checkout.getCVSCommand() |
+ "' against '" + cvsclient.getRoot().host + "@" |
+ cvsclient.getRoot().repository + "'"); |
client.executeCommand(checkout, cvsclient.getGlobalOptions()); |
} catch (CommandAbortedException e) { |
e.printStackTrace(); |
} catch (ConfigurationException e) { |
e.printStackTrace(); |
} catch (AuthenticationException e) { |
e.printStackTrace(); |
} catch (CommandException e) { |
e.printStackTrace(); |
} |
if (result.getContent() != null) { |
return Response.ok(result).build(); |
} |
return Response.noContent().build(); |
} |
public JCS getCacheInstance() { |
JCS jcs = null; |
String cacheinstance = "CVSCache"; |
try { |
this.logger.trace("Getting cache instance named 'CVSCache'"); |
jcs = JCS.getInstance("CVSCache"); |
} catch (CacheException e) { |
this.logger.error("Failed to get cache instance", e); |
e.printStackTrace(); |
} |
return jcs; |
} |
public Response searchFileContent(HttpHeaders h, File f, |
String file_regexp, String content_regexp, boolean forceNoCache) { |
try { |
CVSClient client = new CVSClient(f); |
String cvsroot = client.getRoot().host + "@" |
+ client.getRoot().repository; |
String cachestring = "FINDINGS-" + cvsroot; |
this.logger |
.debug("Fetch searchFileContent response from cache using cachekey '" |
+ cachestring + "'"); |
FindingsListType result = (FindingsListType) getCacheInstance() |
.get(cachestring); |
if (result != null) |
this.logger.debug("Found object for key '" + cachestring |
+ "' in cache."); |
else { |
this.logger.debug("Found no object for key '" + cachestring |
+ "' in cache."); |
} |
if (result != null) |
return Response.ok(result).build(); |
} catch (CommandAbortedException e) { |
e.printStackTrace(); |
} catch (ConfigurationException e) { |
e.printStackTrace(); |
} catch (AuthenticationException e) { |
e.printStackTrace(); |
} |
return Response.noContent().build(); |
} |
private AttributeType getAttribute(String name, String value) { |
AttributeType attribute = this.FACTORY.createAttributeType(); |
attribute.setName(name); |
attribute.setValue(value); |
return attribute; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/FileInfo.java |
---|
0,0 → 1,20 |
package net.brutex.xservices.ws.rs; |
import javax.ws.rs.DefaultValue; |
import javax.ws.rs.GET; |
import javax.ws.rs.Path; |
import javax.ws.rs.Produces; |
import javax.ws.rs.QueryParam; |
import javax.ws.rs.core.Context; |
import javax.ws.rs.core.HttpHeaders; |
import javax.ws.rs.core.Response; |
@Path("/FileService/") |
@Produces({"application/xml"}) |
public abstract interface FileInfo |
{ |
@GET |
@Path("getFiles/") |
public abstract Response getFiles(@Context HttpHeaders paramHttpHeaders, @QueryParam("directory") String paramString1, @QueryParam("includeDirectories") @DefaultValue("0") boolean paramBoolean1, @QueryParam("includeFiles") @DefaultValue("1") boolean paramBoolean2, @QueryParam("depth") @DefaultValue("1") int paramInt1, @QueryParam("search") String paramString2, @QueryParam("itemsPerPage") @DefaultValue("50") int paramInt2, @QueryParam("page") @DefaultValue("1") int paramInt3); |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/FileInfoImpl.java |
---|
0,0 → 1,95 |
package net.brutex.xservices.ws.rs; |
import java.io.File; |
import java.io.FileFilter; |
import java.util.ArrayList; |
import java.util.List; |
import javax.ws.rs.core.GenericEntity; |
import javax.ws.rs.core.HttpHeaders; |
import javax.ws.rs.core.Response; |
import net.brutex.xservices.security.StandardSecurityManager; |
import net.brutex.xservices.security.UserIdentity; |
import net.brutex.xservices.types.FileInfoType; |
import org.apache.jcs.JCS; |
import org.apache.jcs.access.exception.CacheException; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
public class FileInfoImpl implements FileInfo |
{ |
public Response getFiles(HttpHeaders h, String dir, boolean withDir, boolean withFiles, int level, String search, int count, int page) |
{ |
StandardSecurityManager sec = new StandardSecurityManager(); |
UserIdentity id = new UserIdentity(); |
if (!sec.canExecute(java.lang.Thread.currentThread().getStackTrace()[1].getMethodName(), id)) { |
return null; |
} |
System.out.println("Listing directory: " + dir); |
if (level <= 0) level = 1; |
if (level > 3) level = 3; |
if ((!withDir) && (!withFiles)) withFiles = true; |
String cachekey = level + "||" + withFiles + "||" + withDir + "||" + search + "||" + dir; |
try { |
JCS jcs = JCS.getInstance("FileCache"); |
List list = (List)jcs.get(cachekey); |
if (list == null) { |
list = setDirectory(dir, withDir, withFiles, level, search); |
jcs.put(cachekey, list); |
System.out.println("Stored in Cache: " + list.toString()); |
} else { |
System.out.println("Got from Cache: " + list.toString()); |
} |
int fromIndex = 0; |
int toIndex = 0; |
fromIndex = (page - 1) * count; |
toIndex = page * count; |
if (toIndex > list.size()) toIndex = list.size(); |
if (fromIndex > toIndex) fromIndex = toIndex; |
GenericEntity sublist = new GenericEntity(list.subList(fromIndex, toIndex)) |
{ |
}; |
return Response.ok(sublist).build(); |
} catch (CacheException e) { |
Response.serverError().build(); |
} |
return null; |
} |
private void setDirectory(List<FileInfoType> list, File dir, boolean withDirectories, boolean withFiles, final int depth, final String search) |
{ |
if (depth <= 0) return; |
File[] files = dir.listFiles(new FileFilter() |
{ |
public boolean accept(File pathname) { |
if ((pathname.isDirectory()) && (depth > 1)) return true; |
if ((search == null) || (search.equals(""))) return true; |
if (!pathname.getAbsolutePath().contains(search)) return false; |
return true; |
} |
}); |
if ((dir.getParentFile() != null) && (withDirectories)) list.add(new FileInfoType(dir.getParentFile())); |
if (files == null) return; |
for (File e : files) { |
if (e.isDirectory()) setDirectory(list, e, withDirectories, withFiles, depth - 1, search); |
if (((withDirectories) && (e.isDirectory())) || ( |
(withFiles) && (e.isFile()))) |
list.add(new FileInfoType(e)); |
} |
} |
private List<FileInfoType> setDirectory(String dir, boolean withDirectories, boolean withFiles, int depth, String search) |
{ |
List list = new ArrayList(); |
setDirectory(list, new File(dir), withDirectories, withFiles, depth, search); |
return list; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/FileListType.java |
---|
0,0 → 1,21 |
package net.brutex.xservices.ws.rs; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
@XmlRootElement(name="FileList") |
public class FileListType |
{ |
@XmlElement |
public String name; |
public FileListType() |
{ |
} |
public FileListType(String name) |
{ |
this.name = name; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/DateServiceImpl.java |
---|
0,0 → 1,190 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.math.BigInteger; |
import java.text.ParseException; |
import java.text.SimpleDateFormat; |
import java.util.Date; |
import java.util.GregorianCalendar; |
import java.util.TimeZone; |
import javax.jws.WebService; |
import net.brutex.xservices.types.DateFormatType; |
import net.brutex.xservices.types.DateTimeUnits; |
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 |
) |
public class DateServiceImpl implements DateService { |
private static String ERR_INVALIDFORMAT = "Invalid format pattern."; |
private static String ERR_INVALIDTIMEZONE = "Invalid timezone."; |
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; |
return new BigInteger(Long.toString(l)); |
} |
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(GregorianCalendar cal, DateFormatType format) throws XServicesFault { |
return formatDateAdvanced(cal, format.format()); |
} |
public String formatDateAdvanced(GregorianCalendar cal, String format) |
throws XServicesFault { |
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 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 { |
SimpleDateFormat f = null; |
Date date = null; |
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) { |
throw new XServicesFault(ERR_INVALIDFORMAT + e.getMessage()); |
} catch (ParseException e) { |
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(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(GregorianCalendar fromCal, |
GregorianCalendar toCal, DateTimeUnits unit) throws XServicesFault { |
BigInteger d = dateTimeDiff(fromCal, toCal); |
switch (unit) { |
case SECONDS: |
d = d.divide(new BigInteger("1000")); |
break; |
case MINUTES: |
d = d.divide(new BigInteger("60000")); |
break; |
case HOURS: |
d = d.divide(new BigInteger("3600000")); |
break; |
case DAYS: |
d = d.divide(new BigInteger("86400000")); |
} |
return d; |
} |
public GregorianCalendar dateAdd(GregorianCalendar cal, BigInteger value, DateTimeUnits unit) |
throws XServicesFault { |
switch (unit) { |
case SECONDS: |
cal.add(GregorianCalendar.SECOND, value.intValue()); |
break; |
case MINUTES: |
cal.add(GregorianCalendar.MINUTE, value.intValue()); |
break; |
case HOURS: |
cal.add(GregorianCalendar.HOUR_OF_DAY, value.intValue()); |
break; |
case DAYS: |
cal.add(GregorianCalendar.DAY_OF_MONTH, 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)) { |
yes = true; |
break; |
} |
} |
return yes; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/FileServiceImpl.java |
---|
0,0 → 1,370 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.io.File; |
import java.io.FileNotFoundException; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.io.InputStream; |
import java.util.List; |
import javax.activation.DataHandler; |
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.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.FileService; |
import net.brutex.xservices.ws.XServicesFault; |
import org.apache.cxf.aegis.type.mtom.StreamDataSource; |
import org.apache.tools.ant.BuildException; |
import org.apache.tools.ant.taskdefs.Basename; |
import org.apache.tools.ant.taskdefs.Chmod; |
import org.apache.tools.ant.taskdefs.Copy; |
import org.apache.tools.ant.taskdefs.Echo; |
import org.apache.tools.ant.taskdefs.LoadResource; |
import org.apache.tools.ant.taskdefs.Replace; |
import org.apache.tools.ant.taskdefs.optional.ReplaceRegExp; |
import org.apache.tools.ant.taskdefs.optional.unix.Chgrp; |
import org.apache.tools.ant.taskdefs.optional.unix.Chown; |
import org.apache.tools.ant.types.FileSet; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.FileService", serviceName = "FileService") |
public class FileServiceImpl implements FileService { |
/* |
* (non-Javadoc) |
* |
* @see net.brutex.xservices.ws.impl.FileService#basename(java.lang.String, |
* java.lang.String) |
*/ |
public String basename(String filename, String suffix) { |
final String BASENAME_VALUE = "basename.value"; |
Basename basename = new Basename(); |
RunTask runner = new RunTask(basename); |
basename.setFile(new File(filename)); |
if (suffix != null && !suffix.equals("")) { |
basename.setSuffix(suffix); |
} |
basename.setProperty(BASENAME_VALUE); |
ReturnCode r = runner.postTask(); |
return r.getProperty(BASENAME_VALUE); |
} |
public ReturnCode replaceInFile(FileResource res, String search, |
String replace) throws XServicesFault { |
ReturnCode r = null; |
Replace rep = new Replace(); |
rep.setTaskName("Replace"); |
RunTask runner = new RunTask(rep); |
rep.addConfigured(res.getAntResource(rep.getProject())); |
rep.setToken(search); |
rep.setValue(replace); |
try { |
r = runner.postTask(); |
} catch (BuildException e) { |
throw new XServicesFault(e); |
} |
return r; |
} |
public ReturnCode replaceInFile2(FileResource res, |
List<ReplacePattern> patternList) throws XServicesFault { |
ReturnCode r = null; |
for (ReplacePattern pat : patternList) { |
Replace rep = new Replace(); |
rep.setTaskName("Replace"); |
RunTask runner = new RunTask(rep); |
rep.addConfigured(res.getAntResource(rep.getProject())); |
rep.setToken(pat.search); |
rep.setValue(pat.replace); |
try { |
r = runner.postTask(); |
} catch (BuildException e) { |
throw new XServicesFault(e); |
} |
} |
return r; |
} |
public ReturnCode replaceInFileRegEx(FileResource res, String search, |
String replace, String flags) throws XServicesFault { |
ReplaceRegExp rep = new ReplaceRegExp(); |
rep.setTaskName("ReplaceRegExp"); |
RunTask runner = new RunTask(rep); |
File infile = new File(res.uri); |
rep.setFile(infile); |
rep.setMatch(search); |
rep.setReplace(replace); |
rep.setFlags(flags); |
try { |
ReturnCode r = runner.postTask(); |
return r; |
} catch (BuildException e) { |
throw new XServicesFault(e); |
} |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#base64Encode(net.brutex.xservices |
* .types.FileSetResource) |
*/ |
public AttachmentType downloadFile(FileResource res) throws XServicesFault { |
InputStream is = null; |
try { |
is = res.getAntResource(null).getInputStream(); |
StreamDataSource ssource = new StreamDataSource( |
"application/binary", is); |
DataHandler h = new DataHandler(ssource); |
AttachmentType t = new AttachmentType(); |
t.setContent(h); |
t.setFilename(res.getAntResource(null).getName()); |
return t; |
} catch (IOException e) { |
throw new XServicesFault(e); |
} |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#base64Decode(net.brutex.xservices |
* .types.AttachmentType) |
*/ |
public String uploadFile(AttachmentType file) throws XServicesFault { |
DataHandler h = file.getContent(); |
File f = new File(file.getFilename()); |
FileOutputStream fout; |
try { |
fout = new FileOutputStream(f); |
h.writeTo(fout); |
fout.flush(); |
fout.close(); |
} catch (FileNotFoundException e) { |
throw new XServicesFault(e); |
} catch (IOException e) { |
throw new XServicesFault(e); |
} |
return file.getFilename(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#copy(net.brutex.xservices.types |
* .FileSetResource, java.lang.String, boolean, boolean, java.lang.String) |
*/ |
public ReturnCode copy(FileSetResource src, String todir, boolean plm, |
boolean overwrite, String encoding) throws XServicesFault { |
Copy copy = new Copy(); |
copy.setTaskName("Copy"); |
RunTask runner = new RunTask(copy); |
FileSet set = src.getAntResource(copy.getProject()); |
copy.add(set); |
File dst = new File(todir); |
if (dst.isDirectory()) { |
copy.setTodir(dst); |
} |
if (dst.isFile()) { |
copy.setTofile(dst); |
} |
copy.setOverwrite(overwrite); |
copy.setPreserveLastModified(plm); |
if (encoding != null && !encoding.equals("")) { |
copy.setOutputEncoding(encoding); |
} else { |
copy.setOutputEncoding(System.getProperty("file.encoding")); |
} |
return runner.postTask(); |
} |
public ReturnCode copyFile(String fromFile, String tofile, boolean overwrite) |
throws XServicesFault { |
Copy copy = new Copy(); |
copy.setTaskName("Copy"); |
RunTask runner = new RunTask(copy); |
File f = new File(fromFile); |
if (!f.isFile()) |
throw new XServicesFault("File '" + fromFile + "' not found."); |
copy.setFile(new File(fromFile)); |
copy.setTofile(new File(tofile)); |
copy.setOverwrite(overwrite); |
return runner.postTask(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#loadRes(net.brutex.xservices |
* .types.FileResource, java.lang.String) |
*/ |
public String loadRes(FileResource res, String encoding) |
throws XServicesFault { |
if (encoding == null || encoding.equals("")) { |
encoding = System.getProperty("file.encoding"); |
} |
LoadResource lr = new LoadResource(); |
lr.setTaskName("LoadResource"); |
RunTask runner = new RunTask(lr); |
lr.addConfigured(res.getAntResource(lr.getProject())); |
lr.setEncoding(encoding); |
System.out.println("Using encoding: " + encoding); |
lr.setProperty("LoadResource.out"); |
ReturnCode r = runner.postTask(); |
return r.getProperty("LoadResource.out"); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#loadResFromArchive(net.brutex |
* .xservices.types.ArchiveResource, java.lang.String) |
*/ |
public String loadResFromArchive(ArchiveResource res, String encoding) { |
if (encoding == null || encoding.equals("")) { |
encoding = System.getProperty("file.encoding"); |
} |
LoadResource lr = new LoadResource(); |
lr.setTaskName("LoadResource"); |
RunTask runner = new RunTask(lr); |
lr.addConfigured(res.getAntResource(lr.getProject())); |
lr.setEncoding(encoding); |
System.out.println("Using encoding: " + encoding); |
lr.setProperty("LoadResource.out"); |
ReturnCode r = runner.postTask(); |
return r.getProperty("LoadResource.out"); |
} |
/* |
* (non-Javadoc) |
* |
* @see net.brutex.xservices.ws.impl.FileService#echo2file(java.lang.String, |
* java.lang.String, java.lang.String, boolean) |
*/ |
public ReturnCode echo2file(String message, String file, String encoding, |
boolean append) throws XServicesFault { |
Echo echo = new Echo(); |
echo.setTaskName("toFile"); |
RunTask runTask = new RunTask(echo); |
echo.addText(message); |
echo.setEncoding(encoding); |
File f = new File(file); |
try { |
if (!f.canWrite()) |
throw new XServicesFault("Cannot write to file: " |
+ f.getCanonicalPath()); |
echo.setFile(f); |
echo.setAppend(append); |
ReturnCode c = runTask.postTask(); |
return c; |
} catch (BuildException e) { |
throw new XServicesFault("Error in echo2file.", e); |
} catch (IOException e) { |
throw new XServicesFault("Cannot write to file.", e); |
} |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#changeOwner(net.brutex.xservices |
* .types.FileSetResource, java.lang.String) |
*/ |
public ReturnCode changeOwner(FileSetResource res, String owner) { |
Chown chown = new Chown(); |
chown.setTaskName("Chown"); |
RunTask runner = new RunTask(chown); |
chown.setOwner(owner); |
FileSet set = res.getAntResource(chown.getProject()); |
chown.add(set); |
chown.setMaxParallel(300); |
return runner.postTask(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#changeGroup(net.brutex.xservices |
* .types.FileSetResource, java.lang.String) |
*/ |
public ReturnCode changeGroup(FileSetResource res, String group) { |
Chgrp chgrp = new Chgrp(); |
chgrp.setTaskName("Chgrp"); |
RunTask runner = new RunTask(chgrp); |
chgrp.setGroup(group); |
FileSet set = res.getAntResource(chgrp.getProject()); |
chgrp.add(set); |
chgrp.setMaxParallel(300); |
return runner.postTask(); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.FileService#changeMode(net.brutex.xservices |
* .types.FileSetResource, java.lang.String) |
*/ |
public ReturnCode changeMode(FileSetResource res, String perm) { |
Chmod chmod = new Chmod(); |
chmod.setTaskName("Chmod"); |
RunTask runner = new RunTask(chmod); |
FileSet set = res.getAntResource(chmod.getProject()); |
chmod.add(set); |
chmod.setMaxParallel(300); |
chmod.setPerm(perm); |
chmod.setVerbose(true); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/JobServiceImpl.java |
---|
0,0 → 1,151 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import static org.quartz.TriggerBuilder.newTrigger; |
import java.util.ArrayList; |
import java.util.GregorianCalendar; |
import java.util.List; |
import java.util.Set; |
import java.util.TimeZone; |
import java.util.UUID; |
import javax.jws.WebService; |
import org.quartz.JobBuilder; |
import org.quartz.JobDataMap; |
import org.quartz.JobDetail; |
import org.quartz.JobKey; |
import org.quartz.Scheduler; |
import org.quartz.SchedulerException; |
import org.quartz.SimpleTrigger; |
import org.quartz.Trigger; |
import org.quartz.TriggerKey; |
import org.quartz.impl.StdSchedulerFactory; |
import org.quartz.impl.matchers.GroupMatcher; |
import net.brutex.xservices.types.ScheduledJob; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.JobWrapper; |
import net.brutex.xservices.ws.JobService; |
import net.brutex.xservices.ws.XServicesFault; |
/** |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.JobService", serviceName = JobService.SERVICE_NAME) |
public class JobServiceImpl implements JobService { |
public List<ScheduledJob> getJobList() throws XServicesFault { |
List<ScheduledJob> joblist = new ArrayList<ScheduledJob>(); |
try { |
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); |
List<String> jobgroups = scheduler.getJobGroupNames(); |
for (String g : jobgroups) { |
GroupMatcher m = GroupMatcher.groupContains(g); |
Set<JobKey> keyset = scheduler.getJobKeys(m); |
for (JobKey key : keyset) { |
JobDataMap detail = scheduler.getJobDetail(key) |
.getJobDataMap(); |
ScheduledJob job = new ScheduledJob(key.getName(), |
(GregorianCalendar) detail.get("date"), |
detail.getString("script")); |
joblist.add(job); |
} |
} |
} catch (SchedulerException e) { |
throw new XServicesFault(e); |
} |
return joblist; |
} |
public ScheduledJob getJob(String uuid) throws XServicesFault { |
try { |
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); |
JobDetail job = scheduler.getJobDetail(new JobKey(uuid, "DEFAULT")); |
if (job == null) |
throw new XServicesFault("Job not found."); |
Trigger t = scheduler.getTrigger(new TriggerKey(uuid)); |
GregorianCalendar cal = new GregorianCalendar(TimeZone.getDefault()); |
cal.setTime(t.getStartTime()); |
return new ScheduledJob(uuid, cal, job.getJobDataMap().getString( |
"script"), job.getDescription()); |
} catch (SchedulerException e) { |
e.printStackTrace(); |
throw new XServicesFault(e); |
} |
} |
public void deleteJob(String uuid) throws XServicesFault { |
try { |
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); |
JobKey key = new JobKey(uuid, "DEFAULT"); |
JobDetail job = scheduler.getJobDetail(key); |
if (job == null) |
throw new XServicesFault("Job not found."); |
Trigger t = scheduler.getTrigger(new TriggerKey(uuid)); |
scheduler.deleteJob(key); |
} catch (SchedulerException e) { |
throw new XServicesFault(e); |
} |
} |
public String scheduleJob(ScheduledJob job) throws XServicesFault { |
try { |
// Grab the Scheduler instance from the Factory |
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); |
// and start it off |
if (!scheduler.isStarted()) |
scheduler.start(); |
if (scheduler.isInStandbyMode()) |
scheduler.resumeAll(); |
String identity = UUID.randomUUID().toString(); |
//String identity = "test"; |
JobDetail job2 = JobBuilder.newJob(JobWrapper.class) |
.withIdentity(identity).build(); |
job2.getJobDataMap().put("script", job.getScript()); |
job2.getJobDataMap().put("description", job.getDescription()); |
job2.getJobDataMap().put("date", job.getDate()); |
SimpleTrigger t = (SimpleTrigger) newTrigger() |
.withIdentity(identity).startAt(job.getDate().getTime()) |
.build(); |
; |
scheduler.scheduleJob(job2, t); |
return identity; |
} catch (SchedulerException e) { |
e.printStackTrace(); |
throw new XServicesFault(e); |
} |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/MiscServiceImpl.java |
---|
0,0 → 1,156 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.util.Enumeration; |
import java.util.Properties; |
import javax.jws.WebService; |
import net.brutex.xservices.types.FileSetResource; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.MiscService; |
import org.apache.cxf.annotations.WSDLDocumentation; |
import org.apache.cxf.annotations.WSDLDocumentationCollection; |
import org.apache.tools.ant.taskdefs.HostInfo; |
import org.apache.tools.ant.taskdefs.Sleep; |
import org.apache.tools.ant.taskdefs.email.EmailTask; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@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" |
) |
public class MiscServiceImpl implements MiscService { |
@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; |
// Get all system properties |
Properties props = System.getProperties(); |
// Enumerate all system properties |
Enumeration<String> e = (Enumeration<String>) props.propertyNames(); |
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"; |
} |
return r; |
} |
public ReturnCode sendMailSimple(HostConnection mailhost, String from, |
String tolist, String subject, String message) { |
return sendMail(from, from, tolist, "", "", subject, message, |
"text/plain", null, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, "utf-8", false, false); |
} |
public ReturnCode sendMailSimpleWithAttachment(HostConnection mailhost, |
String from, String tolist, String subject, String message, |
FileSetResource res) { |
return sendMail(from, from, tolist, "", "", subject, message, |
"text/plain", res, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, "utf-8", false, false); |
} |
public ReturnCode sendMail(HostConnection mailhost, String from, |
String tolist, String cclist, String bcclist, String subject, |
MailMimeType mimetype, String charset, String message, |
FileSetResource res, boolean ssl, boolean tls) { |
return sendMail(from, from, tolist, cclist, bcclist, subject, message, |
mimetype.value(), res, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, charset, tls, ssl); |
} |
public ReturnCode sleep(int minutes, int seconds) { |
return sleep(0, minutes, seconds, 0); |
} |
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, |
String cclist, String bcclist, String subject, String message, |
String messagemimetype, FileSetResource attachments, |
String mailhost, int mailport, String user, String password, |
String charset, boolean tls, boolean ssl) { |
EmailTask mail = new EmailTask(); |
mail.setTaskName("Mail"); |
RunTask runner = new RunTask(mail); |
mail.setFrom(from); |
mail.setReplyTo(replyto); |
mail.setToList(tolist); |
mail.setCcList(cclist); |
mail.setBccList(bcclist); |
mail.setSubject(subject); |
mail.setMessage(message); |
mail.setMessageMimeType(messagemimetype); |
if (attachments != null) { |
mail.addFileset(attachments.getAntResource(mail.getProject())); |
} |
mail.setMailhost(mailhost); |
mail.setMailport(mailport); |
mail.setUser(user); |
mail.setPassword(password); |
mail.setCharset(charset); |
mail.setSSL(ssl); |
mail.setEnableStartTLS(tls); |
return runner.postTask(); |
} |
private ReturnCode sleep(int hours, int minutes, int seconds, |
int milliseconds) { |
Sleep sleep = new Sleep(); |
sleep.setTaskName("Sleep"); |
RunTask runner = new RunTask(sleep); |
sleep.setHours(hours); |
sleep.setMinutes(minutes); |
sleep.setSeconds(seconds); |
sleep.setMilliseconds(milliseconds); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/ArchiveServiceImpl.java |
---|
0,0 → 1,324 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.io.File; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.ArchiveResource; |
import net.brutex.xservices.types.CompressionType; |
import net.brutex.xservices.types.FileResource; |
import net.brutex.xservices.types.ResourceInterface; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.util.UnRarTask; |
import net.brutex.xservices.ws.ArchiveService; |
import org.apache.tools.ant.taskdefs.BUnzip2; |
import org.apache.tools.ant.taskdefs.BZip2; |
import org.apache.tools.ant.taskdefs.Expand; |
import org.apache.tools.ant.taskdefs.GUnzip; |
import org.apache.tools.ant.taskdefs.GZip; |
import org.apache.tools.ant.taskdefs.Untar; |
import org.apache.tools.ant.taskdefs.Zip; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, |
endpointInterface="net.brutex.xservices.ws.ArchiveService", |
serviceName = "ArchiveService") |
public class ArchiveServiceImpl implements ArchiveService { |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bzip2(net.brutex.xservices.types.FileResource, java.lang.String) |
*/ |
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2) |
public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return bzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bzip2FromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String) |
*/ |
@WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action = WS_OPERATION_BZIP2_ARCHIVE) |
public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return null;// return bzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gzip(net.brutex.xservices.types.FileResource, java.lang.String) |
*/ |
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP) |
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return gzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gzipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String) |
*/ |
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE) |
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) { |
return gzip(src, new File(file)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gunzip(java.lang.String, java.lang.String) |
*/ |
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP) |
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return GUnzip(new FileResource(FileResource.Type.FILE, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bunzip2(java.lang.String, java.lang.String) |
*/ |
@WebMethod(operationName = WS_OPERATION_BUNZIP2) |
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return BUnzip2(new FileResource(FileResource.Type.FILE, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#gunzipFromURL(java.lang.String, java.lang.String) |
*/ |
@WebMethod(operationName = "gunzipFromURL") |
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return GUnzip(new FileResource(FileResource.Type.URL, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#bunzip2FromURL(java.lang.String, java.lang.String) |
*/ |
@WebMethod(operationName = "bunzip2FromURL") |
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
File target = null; |
if (!dest.equals("") && dest != null) { |
target = new File(dest); |
} |
return BUnzip2(new FileResource(FileResource.Type.URL, src), target); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#zip(net.brutex.xservices.types.FileResource, java.lang.String, boolean, java.lang.String, int) |
*/ |
@WebMethod(operationName = "zip") |
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) { |
if (level > 9) { |
level = 9; |
} |
if (level < 0) { |
level = 0; |
} |
return zip(src, new File(file), encoding, !overwrite, level); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#zipFromArchive(net.brutex.xservices.types.ArchiveResource, java.lang.String, boolean, java.lang.String, int) |
*/ |
@WebMethod(operationName = "zipFromArchive") |
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean update, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) { |
return zip(src, new File(file), encoding, !update, level); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#unzip(java.lang.String, java.lang.String, boolean, java.lang.String) |
*/ |
@WebMethod(operationName = "unzip") |
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding) { |
return unzip(new File(src), new File(dest), overwrite, encoding); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#unrar(java.lang.String, java.lang.String) |
*/ |
@WebMethod(operationName = "unrar") |
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) { |
return unrar(new File(src), new File(dest)); |
} |
/* (non-Javadoc) |
* @see net.brutex.xservices.ws.ArchiveService#untar(java.lang.String, java.lang.String, boolean, net.brutex.xservices.types.CompressionType) |
*/ |
@WebMethod(operationName = "untar") |
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = "compression") CompressionType compression) { |
Untar.UntarCompressionMethod c = new Untar.UntarCompressionMethod(); |
switch (compression) { |
case GZIP: |
c.setValue("gzip"); |
break; |
case BZIP2: |
c.setValue("bzip2"); |
break; |
default: |
c.setValue("none"); |
break; |
} |
return untar(new File(src), new File(dest), overwrite, c); |
} |
@WebMethod(exclude = true) |
private ReturnCode bzip(ResourceInterface src, File dst) { |
if (dst.exists() && dst.isFile()) { |
dst.delete(); |
} |
BZip2 bzip = new BZip2(); |
bzip.setTaskName("BZip2"); |
RunTask runner = new RunTask(bzip); |
bzip.setSrcResource(src.getAntResource(bzip.getProject())); |
bzip.setDestfile(dst); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode gzip(ResourceInterface src, File dst) { |
if (dst.exists() && dst.isFile()) { |
dst.delete(); |
} |
GZip gzip = new GZip(); |
gzip.setTaskName("GZip"); |
RunTask runner = new RunTask(gzip); |
gzip.addConfigured(src.getAntResource(gzip.getProject())); |
gzip.setDestfile(dst); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode zip(ResourceInterface src, File dst, String encoding, boolean update, int compresslevel) { |
Zip zip = new Zip(); |
zip.setTaskName("Zip"); |
RunTask runner = new RunTask(zip); |
zip.add(src.getAntResource(zip.getProject())); |
zip.setDestFile(dst); |
if (encoding != null && !encoding.equals("")) { |
zip.setEncoding(encoding); |
} |
zip.setUpdate(update); |
zip.setLevel(compresslevel); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode GUnzip(ResourceInterface src, File dst) { |
GUnzip uz = new GUnzip(); |
uz.setTaskName("GUnzip"); |
RunTask runner = new RunTask(uz); |
uz.setSrcResource(src.getAntResource(uz.getProject())); |
if (dst != null) { |
uz.setDest(dst); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode BUnzip2(ResourceInterface src, File dst) { |
BUnzip2 uz = new BUnzip2(); |
uz.setTaskName("BUnzip2"); |
RunTask runner = new RunTask(uz); |
uz.setSrcResource(src.getAntResource(uz.getProject())); |
if (dst != null) { |
uz.setDest(dst); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode unzip(File src, File dest, boolean overwrite, String encoding) { |
Expand unzip = new Expand(); |
unzip.setTaskName("UnZip"); |
RunTask runner = new RunTask(unzip); |
unzip.setSrc(src); |
unzip.setDest(dest); |
unzip.setOverwrite(overwrite); |
if (encoding != null && !encoding.equals("")) { |
unzip.setEncoding(encoding); |
} |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode untar(File src, File dest, boolean overwrite, Untar.UntarCompressionMethod compression) { |
Untar unzip = new Untar(); |
unzip.setTaskName("Untar"); |
RunTask runner = new RunTask(unzip); |
unzip.setSrc(src); |
unzip.setDest(dest); |
unzip.setOverwrite(overwrite); |
unzip.setCompression(compression); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode unrar(File src, File dst) { |
UnRarTask unrar = new UnRarTask(); |
unrar.setTaskName("UnRar"); |
RunTask runner = new RunTask(unrar); |
unrar.setSrc(src); |
unrar.setDst(dst); |
return runner.postTask(); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/StringServiceImpl.java |
---|
0,0 → 1,99 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.util.regex.Matcher; |
import java.util.regex.Pattern; |
import javax.jws.WebService; |
import net.brutex.xservices.types.StringMatchType; |
import net.brutex.xservices.types.StringReplaceType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.ws.StringService; |
import net.brutex.xservices.ws.XServicesFault; |
/** |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.StringService", serviceName = StringService.SERVICE_NAME) |
public class StringServiceImpl implements StringService { |
public StringReplaceType replaceRegEx(String res, String search, |
String replace, String flags) throws XServicesFault { |
try { |
int allflags = getFlags(flags); |
Pattern pattern = Pattern.compile(search, allflags); |
Matcher matcher = pattern.matcher(res); |
int count = 0; |
while (matcher.find()) { |
count++; |
} |
if (flags.contains("g")) { |
return new StringReplaceType(matcher.replaceAll(replace), count); |
} else { |
if (count > 1) |
count = 1; |
return new StringReplaceType(matcher.replaceFirst(replace), |
count); |
} |
} catch (Exception e) { |
throw new XServicesFault(e); |
} |
} |
@Override |
public StringMatchType matchRegEx(String res, String search, String flags) |
throws XServicesFault { |
int allflags = getFlags(flags); |
Pattern pattern = Pattern.compile(search, allflags); |
Matcher matcher = pattern.matcher(res); |
StringMatchType rm = new StringMatchType(); |
while (matcher.find()) { |
for(int i=0; i<=matcher.groupCount();i++){ |
rm.addStringMatch(matcher.start(), matcher.end(), matcher.group(i)); |
} |
} |
return rm; |
} |
private int getFlags(String flags) { |
int allflags = 0; |
if(flags.contains("i")) { |
allflags = allflags + Pattern.CASE_INSENSITIVE; |
} |
if(flags.contains("m")) { |
allflags = allflags + Pattern.MULTILINE; |
} |
if(flags.contains("u")) { |
allflags = allflags + Pattern.UNICODE_CASE; |
} |
if(flags.contains("s")) { |
allflags = allflags + Pattern.DOTALL; |
} |
if(flags.contains("d")) { |
allflags = allflags + Pattern.UNIX_LINES; |
} |
if(flags.contains("x")) { |
allflags = allflags + Pattern.COMMENTS; |
} |
return allflags; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/StorageServiceImpl.java |
---|
0,0 → 1,58 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import javax.jws.WebService; |
import net.brutex.xservices.types.TargetNodeType; |
import net.brutex.xservices.types.ant.AttachmentType; |
import net.brutex.xservices.types.ant.CollectionType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.ws.StorageService; |
import net.brutex.xservices.ws.XServicesFault; |
/** |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.StorageService", serviceName = StorageService.SERVICE_NAME) |
public class StorageServiceImpl implements StorageService { |
public String storeText(String text) throws XServicesFault { |
// TODO Auto-generated method stub |
System.err.println("storeText is not yet implemented"); |
return null; |
} |
public String storeBinary(AttachmentType binary) throws XServicesFault { |
// TODO Auto-generated method stub |
System.err.println("storeBinary is not yet implemented"); |
return null; |
} |
public String createCollection(CollectionType collection) |
throws XServicesFault { |
return collection.getUuid(); |
} |
public void deliverCollection(CollectionType collection, |
TargetNodeType targetnode, boolean isFiring) throws XServicesFault { |
// TODO Auto-generated method stub |
System.err.println("deliverCollection is not yet implemented"); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/MailServiceImpl.java |
---|
0,0 → 1,94 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import javax.jws.WebService; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.types.ant.FileSetResource; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.MailService; |
import org.apache.tools.ant.taskdefs.email.EmailTask; |
/** |
* Implements MailService |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, |
endpointInterface = "net.brutex.xservices.ws.MailService", |
serviceName = "MailService") |
public class MailServiceImpl implements MailService { |
public ReturnCode sendMailSimple(HostConnection mailhost, String from, |
String tolist, String subject, String message) { |
return sendMail(from, from, tolist, "", "", subject, message, |
"text/plain", null, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, "utf-8", false, false); |
} |
public ReturnCode sendMailSimpleWithAttachment(HostConnection mailhost, |
String from, String tolist, String subject, String message, |
FileSetResource res) { |
return sendMail(from, from, tolist, "", "", subject, message, |
"text/plain", res, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, "utf-8", false, false); |
} |
public ReturnCode sendMail(HostConnection mailhost, String from, |
String tolist, String cclist, String bcclist, String subject, |
MailMimeType mimetype, String charset, String message, |
FileSetResource res, boolean ssl, boolean tls) { |
return sendMail(from, from, tolist, cclist, bcclist, subject, message, |
mimetype.value(), res, mailhost.hostname, mailhost.port, |
mailhost.user, mailhost.password, charset, tls, ssl); |
} |
private ReturnCode sendMail(String from, String replyto, String tolist, |
String cclist, String bcclist, String subject, String message, |
String messagemimetype, FileSetResource attachments, |
String mailhost, int mailport, String user, String password, |
String charset, boolean tls, boolean ssl) { |
EmailTask mail = new EmailTask(); |
mail.setTaskName("Mail"); |
RunTask runner = new RunTask(mail); |
mail.setFrom(from); |
mail.setReplyTo(replyto); |
mail.setToList(tolist); |
mail.setCcList(cclist); |
mail.setBccList(bcclist); |
mail.setSubject(subject); |
mail.setMessage(message); |
mail.setMessageMimeType(messagemimetype); |
if (attachments != null) { |
mail.addFileset(attachments.getAntResource(mail.getProject())); |
} |
mail.setMailhost(mailhost); |
mail.setMailport(mailport); |
mail.setUser(user); |
mail.setPassword(password); |
mail.setCharset(charset); |
mail.setSSL(ssl); |
mail.setEnableStartTLS(tls); |
return runner.postTask(); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/ExecuteServiceImpl.java |
---|
0,0 → 1,354 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
import java.io.File; |
import java.util.UUID; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.util.JobWrapper; |
import net.brutex.xservices.util.RunTask; |
import net.brutex.xservices.ws.ExecuteService; |
import net.brutex.xservices.ws.XServicesFault; |
import org.apache.tools.ant.taskdefs.ExecTask; |
import org.apache.tools.ant.taskdefs.optional.net.RExecTask; |
import org.apache.tools.ant.taskdefs.optional.net.TelnetTask; |
import org.apache.tools.ant.taskdefs.optional.ssh.SSHExec; |
import org.apache.tools.ant.types.Commandline; |
import org.mozilla.javascript.Context; |
import org.mozilla.javascript.Scriptable; |
import org.quartz.JobBuilder; |
import org.quartz.JobDetail; |
import org.quartz.Scheduler; |
import org.quartz.SchedulerException; |
import org.quartz.Trigger; |
import static org.quartz.TriggerBuilder.*; |
import static org.quartz.SimpleScheduleBuilder.*; |
import org.quartz.TriggerUtils; |
import org.quartz.impl.StdSchedulerFactory; |
import org.quartz.impl.triggers.SimpleTriggerImpl; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.ExecuteService", serviceName = "ExecuteService") |
public class ExecuteServiceImpl implements ExecuteService { |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runCommand(java.lang.String, |
* java.lang.String, long) |
*/ |
@WebMethod(operationName = "runCommand") |
public ReturnCode runCommand(@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args, |
@WebParam(name = "timeout") long timeout) { |
return executeCommand(cmd, Commandline.translateCommandline(args), |
null, false, null, false, true, false, timeout); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runCommandWithArgs(java.lang |
* .String, java.lang.String[], long) |
*/ |
@WebMethod(operationName = "runCommandWithArgs") |
public ReturnCode runCommandWithArgs( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args, |
@WebParam(name = "timeout") long timeout) { |
return executeCommand(cmd, args, null, false, null, false, true, false, |
timeout); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runCommandAsync(java.lang |
* .String, java.lang.String) |
*/ |
@WebMethod(operationName = "runCommandAsync") |
public ReturnCode runCommandAsync( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args) { |
return executeCommand(cmd, Commandline.translateCommandline(args), |
null, true, null, false, true, false, 0); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runCommandAsyncWithArgs(java |
* .lang.String, java.lang.String[]) |
*/ |
@WebMethod(operationName = "runCommandAsyncWithArgs") |
public ReturnCode runCommandAsyncWithArgs( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args) { |
return executeCommand(cmd, args, null, true, null, false, true, false, |
0); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSH(java.lang |
* .String, int, java.lang.String, java.lang.String, java.lang.String, long) |
*/ |
@WebMethod(operationName = "runCommandWithSSH") |
public ReturnCode runCommandWithSSH( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return sshExec(host.hostname, host.user, host.password, host.port, cmd, |
timeout); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runCommandWithSSHKeyAuth( |
* java.lang.String, int, java.lang.String, java.lang.String, |
* java.lang.String, java.lang.String, long) |
*/ |
@WebMethod(operationName = "runCommandWithSSHKeyAuth") |
public ReturnCode runCommandWithSSHKeyAuth( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "keyfile") String keyfile, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return sshExecWithCert(host.hostname, host.user, host.password, |
keyfile, host.port, cmd, timeout); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#rExec(net.brutex.xservices |
* .types.HostConnection, java.lang.String, long) |
*/ |
@WebMethod(operationName = "rExec") |
public ReturnCode rExec(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout) { |
return rexec(host.hostname, host.port, host.user, host.password, cmd, |
timeout); |
} |
/* |
* (non-Javadoc) |
* |
* @see |
* net.brutex.xservices.ws.impl.ExecuteService#runTelnet(net.brutex.xservices |
* .types.HostConnection, java.lang.String, java.lang.String, |
* java.lang.String, long) |
*/ |
@WebMethod(operationName = "telnet") |
public ReturnCode runTelnet(@WebParam(name = "host") HostConnection host, |
@WebParam(name = "prompt") String prompt, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "expect") String expect, |
@WebParam(name = "timeout") long timeout) { |
return telnet(host.hostname, host.port, host.user, host.password, cmd, |
timeout, prompt, expect); |
} |
public void runJScript(String script) throws XServicesFault { |
try { |
// Create and enter a Context. A Context stores information about |
// the execution environment of a script. |
Context cx = Context.enter(); |
cx.setOptimizationLevel(0); |
cx.setLanguageVersion(Context.VERSION_1_7); |
// cx is the Context instance you're using to run scripts |
/* |
* cx.setClassShutter(new ClassShutter() { public boolean |
* visibleToScripts(String className) { |
* if(className.startsWith("adapter")) return true; |
* if(className.startsWith("java.lang.System") || |
* className.startsWith |
* ("org.apache.tomcat.util.log.SystemLogHandler")) return true; |
* System.out.println(className + " is blocked."); return false; } |
* }); |
*/ |
// Initialise the standard objects (Object, Function, etc.). This |
// must be done before scripts can be |
// executed. The null parameter tells initStandardObjects |
// to create and return a scope object that we use |
// in later calls. |
Scriptable scope = cx.initStandardObjects(); |
// Object wrappedOut = Context.javaToJS(System.out, scope); |
// Object wrappedOut2 = Context.javaToJS(this, scope); |
// scope.put("out", scope, wrappedOut); |
// scope.put("exe", scope, wrappedOut2); |
// Execute the script |
// cx.evaluateString(scope, "importClass('java.lang.System');\n", |
// "head", 1, null); |
// cx.evaluateString(scope, "importPackage('java.util');\n", "head", |
// 2, null); |
Object obj = cx |
.evaluateString(scope, script, "TestScript", 1, null); |
} catch (Exception e) { |
System.out.println(e.getMessage()); |
} finally { |
// Exit the Context. This removes the association between the |
// Context and the current thread and is an |
// essential cleanup action. There should be a call to exit for |
// every call to enter. |
Context.exit(); |
} |
} |
@WebMethod(exclude = true) |
private ReturnCode executeCommand(String executable, String[] args, |
File dir, boolean spawn, String inputstring, |
boolean newenvironment, boolean vmlauncher, boolean searchpath, |
long timeout) { |
ExecTask exe = new ExecTask(); |
RunTask runner = new RunTask(exe); |
/* |
* Commandline cmdl = new Commandline(); cmdl.setExecutable(executable); |
* cmdl.addArguments(args); System.out.println(cmdl.describeCommand()); |
*/ |
exe.setExecutable(executable); |
for (String s : args) { |
exe.createArg().setValue(s); |
} |
exe.setDir(dir); |
if (spawn) { |
exe.setSpawn(spawn); |
} else { |
exe.setTimeout(timeout); |
exe.setInputString(inputstring); |
exe.setOutputproperty("ExecuteService.stdout"); |
exe.setErrorProperty("ExecuteService.stderr"); |
exe.setResultProperty("ExecuteService.result"); |
} |
exe.setNewenvironment(newenvironment); |
exe.setVMLauncher(vmlauncher); |
exe.setSearchPath(searchpath); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode sshExec(String host, String username, String password, |
int port, String command, long timeout) { |
SSHExec sshexec = new SSHExec(); |
RunTask runner = new RunTask(sshexec); |
sshexec.setHost(host); |
sshexec.setUsername(username); |
sshexec.setPassword(password); |
sshexec.setPort(port); |
sshexec.setCommand(command); |
sshexec.setTrust(true); |
sshexec.setTimeout(timeout); |
sshexec.setOutputproperty("SSHExec.stdout"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode sshExecWithCert(String host, String username, |
String passphrase, String keyfile, int port, String command, |
long timeout) { |
SSHExec sshexec = new SSHExec(); |
RunTask runner = new RunTask(sshexec); |
sshexec.setHost(host); |
sshexec.setUsername(username); |
sshexec.setKeyfile(keyfile); |
sshexec.setPassphrase(passphrase); |
sshexec.setPort(port); |
sshexec.setCommand(command); |
sshexec.setTrust(true); |
sshexec.setTimeout(timeout); |
sshexec.setOutputproperty("SSHExec.stdout"); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode rexec(String host, int port, String username, |
String password, String command, long timeout) { |
RExecTask rexec = new RExecTask(); |
RunTask runner = new RunTask(rexec); |
rexec.setServer(host); |
rexec.setPort(port); |
rexec.setUserid(username); |
rexec.setPassword(password); |
rexec.setCommand(command); |
rexec.setTimeout((int) Math.round(timeout)); |
return runner.postTask(); |
} |
@WebMethod(exclude = true) |
private ReturnCode telnet(String host, int port, String username, |
String password, String command, long timeout, String prompt, |
String expect) { |
TelnetTask rexec = new TelnetTask(); |
RunTask runner = new RunTask(rexec); |
rexec.setServer(host); |
rexec.setPort(port); |
rexec.setUserid(username); |
rexec.setPassword(password); |
rexec.setTimeout((int) Math.round(timeout)); |
rexec.createRead().addText(prompt); |
rexec.createWrite().addText(command); |
rexec.createRead().addText(expect); |
return runner.postTask(); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/StringService.java |
---|
0,0 → 1,80 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.types.StringMatchType; |
import net.brutex.xservices.types.StringReplaceType; |
import net.brutex.xservices.types.TargetNodeType; |
import net.brutex.xservices.types.ant.AttachmentType; |
import net.brutex.xservices.types.ant.CollectionType; |
import net.brutex.xservices.types.ant.FileResource; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.annotations.WSDLDocumentation; |
/** |
* String operation services. |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface StringService { |
public static final String SERVICE_NAME = "StringService"; |
final String OPERATION_REPLACEREGEX = "replaceRegEx"; |
final String OPERATION_MATCHREGEX = "matchRegEx"; |
final static String PARAM_STRING = "string"; |
final static String PARAM_SEARCH = "search"; |
final static String PARAM_REPLACE = "replace"; |
final static String PARAM_FLAGS = "regexflags"; |
; |
/** |
* String replace using regular expression. |
* @param res String |
* @param search regex search pattern |
* @param replace string replacement |
* @param flags regex flags |
* |
* @return replacement |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_REPLACEREGEX) |
@WSDLDocumentation(value="Store text based data") |
public abstract StringReplaceType replaceRegEx( |
@WebParam(name = PARAM_STRING) String res, |
@WebParam(name = PARAM_SEARCH) String search, |
@WebParam(name = PARAM_REPLACE) String replace, |
@WebParam(name = PARAM_FLAGS) String flags) throws XServicesFault; |
@WebMethod(operationName=OPERATION_MATCHREGEX) |
@WSDLDocumentation(value="Match text based data") |
public abstract StringMatchType matchRegEx( |
@WebParam(name = PARAM_STRING) String res, |
@WebParam(name = PARAM_SEARCH) String search, |
@WebParam(name = PARAM_FLAGS) String flags) throws XServicesFault; |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/FileService.java |
---|
0,0 → 1,264 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import java.util.List; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import javax.xml.bind.annotation.XmlElement; |
import org.apache.cxf.annotations.WSDLDocumentation; |
import org.apache.cxf.annotations.WSDLDocumentationCollection; |
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.XServicesDocumentation; |
/** |
* File related web service operations. |
* |
* @author Brian Rosenberger |
* @since 0.3.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
@WSDLDocumentationCollection( |
{ |
@WSDLDocumentation(value = BrutexNamespaces.BRUTEX_COPYRIGHT, placement = WSDLDocumentation.Placement.TOP) |
} |
) |
public interface FileService { |
final String OPERATION_BASENAME ="basename"; |
final String OPERATION_DOWNLOADFILE ="downloadFile"; |
final String OPERATION_ENCODEFILE= "encodeFile"; |
final String OPERATION_UPLOADFILE ="uploadFile"; |
final String OPERATION_COPY ="copy"; |
final String OPERATION_COPYFILE ="copyFile"; |
final String OPERATION_LOADRESOURCE = "loadResource"; |
final String OPERATION_LOADRESOURCEFROMARCHIVE = "loadResourceFromArchive"; |
final String OPERATION_ECHOTOFILE = "echoToFile"; |
final String OPERATION_CHANGEOWNER = "changeOwner"; |
final String OPERATION_CHANGEMODE = "changeMode"; |
final String OPERATION_CHANGEGROUP = "changeGroup"; |
final String OPERATION_REPLACEINFILE = "replaceInFile"; |
final String OPERATION_REPLACEINFILE2 = "replaceInFile2"; |
final String OPERATION_REPLACEINFILEREGEX = "replaceInFileRegEx"; |
final String PARAM_FILE = "file"; |
final String PARAM_ENCODING = "encoding"; |
final String PARAM_OVERRIDE = "override"; |
/** |
* @param filename |
* @param suffix |
* @return The base name of the given file excluding the suffix. |
*/ |
@WSDLDocumentation(value = "The base name of the given file excluding the suffix.") |
@WebMethod(operationName = OPERATION_BASENAME) |
public abstract String basename( |
@WebParam(name = PARAM_FILE) @XmlElement(required=true) String filename, |
@WebParam(name = "suffix") String suffix); |
/** |
* @param res |
* @return The file itself (MTOM attachment or inline base64) including some file metadata. |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_DOWNLOADFILE) |
@WebMethod(operationName = OPERATION_DOWNLOADFILE) |
public abstract AttachmentType downloadFile( |
@WebParam(name = FileResource.XML_NAME) FileResource res) throws XServicesFault; |
/** |
* @param res |
* @return Encodes a file |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_ENCODEFILE) |
@WebMethod(operationName = OPERATION_ENCODEFILE) |
public abstract byte[] encodeFile( |
@WebParam(name = FileResource.XML_NAME) FileResource res) throws XServicesFault; |
/** |
* @param file |
* @return The file name of the file that has been uploaded. |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(XServicesDocumentation.SERVICE_OPERATION_UPLOADFILE) |
@WebMethod(operationName = OPERATION_UPLOADFILE) |
public abstract String uploadFile( |
@WebParam(name = PARAM_FILE) AttachmentType file) throws XServicesFault; |
/** |
* @param src |
* @param todir |
* @param plm |
* @param overwrite |
* @param encoding |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_COPY) |
@WebMethod(operationName = OPERATION_COPY) |
public abstract ReturnCode copy( |
@WebParam(name = FileSetResource.XML_NAME) @XmlElement(required=true) FileSetResource src, |
@WebParam(name = "todir") @XmlElement(required=true) String todir, |
@WebParam(name = "preservelastmodified") boolean plm, |
@WebParam(name = PARAM_OVERRIDE) boolean overwrite, |
@WebParam(name = PARAM_ENCODING) String encoding) throws XServicesFault; |
/** |
* @param fromFile |
* @param tofile |
* @param overwrite |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_COPYFILE) |
@WebMethod(operationName = OPERATION_COPYFILE) |
public abstract ReturnCode copyFile( |
@WebParam(name = "fromFile") @XmlElement(required=true) String fromFile, |
@WebParam(name = "toFile") @XmlElement(required=true) String tofile, |
@WebParam(name = PARAM_OVERRIDE) boolean overwrite) throws XServicesFault; |
/** |
* @param res |
* @param encoding |
* @return content of the resource |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_LOADRESOURCE) |
@WebMethod(operationName = OPERATION_LOADRESOURCE) |
public abstract String loadRes( |
@WebParam(name = FileResource.XML_NAME) FileResource res, |
@WebParam(name = PARAM_ENCODING) String encoding) throws XServicesFault; |
/** |
* @param res |
* @param encoding |
* @return content of the resource |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_LOADRESOURCEFROMARCHIVE) |
@WebMethod(operationName = OPERATION_LOADRESOURCEFROMARCHIVE) |
public abstract String loadResFromArchive( |
@WebParam(name = "archiveresource") ArchiveResource res, |
@WebParam(name = PARAM_ENCODING) String encoding) throws XServicesFault; |
/** |
* @param message |
* @param file |
* @param encoding |
* @param append |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_ECHOTOFILE) |
@WebMethod(operationName = OPERATION_ECHOTOFILE) |
public abstract ReturnCode echo2file( |
@WebParam(name = "message") @XmlElement(required=true) String message, |
@WebParam(name = PARAM_FILE) @XmlElement(required=true) String file, |
@WebParam(name = PARAM_ENCODING) String encoding, |
@WebParam(name = "append") boolean append) throws XServicesFault; |
/** |
* Changes the owner of a file or all files inside specified directories. |
* Right now it has effect only under Unix/ Linux as it is implemented through |
* the 'chown' command. |
* |
* @param res Collection of files/ directories |
* @param owner Identifier of the new owner |
* @return |
*/ |
@WebMethod(operationName = OPERATION_CHANGEOWNER) |
public abstract ReturnCode changeOwner( |
@WebParam(name = FileSetResource.XML_NAME) FileSetResource res, |
@WebParam(name = "owner") @XmlElement(required=true) String owner); |
/** |
* Changes the group owner of a file or all files inside specified directories. |
* Right now it has effect only under Unix/ Linux as it is implemented through |
* the 'chgrp' command. |
* |
* @param res Collection of files/ directories |
* @param group Identifier of the new group owner |
* @return |
*/ |
@WebMethod(operationName = OPERATION_CHANGEGROUP) |
public abstract ReturnCode changeGroup( |
@WebParam(name = FileSetResource.XML_NAME) FileSetResource res, |
@WebParam(name = "group") @XmlElement(required=true) String group); |
/** |
* @param res |
* @param perm |
* @return |
*/ |
@WebMethod(operationName = OPERATION_CHANGEMODE) |
public abstract ReturnCode changeMode( |
@WebParam(name = FileSetResource.XML_NAME) FileSetResource res, |
@WebParam(name = "permissions") @XmlElement(required=true) String perm); |
/** |
* @param res |
* @param search |
* @param replace |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_REPLACEINFILE) |
@WebMethod(operationName = OPERATION_REPLACEINFILE) |
public abstract ReturnCode replaceInFile( |
@WebParam(name = FileResource.XML_NAME) @XmlElement(required=true) FileResource res, |
@WebParam(name = "search") @XmlElement(required=true) String search, |
@WebParam(name = "replace") @XmlElement(required=true) String replace) throws XServicesFault; |
/** |
* @param res |
* @param patternList |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_REPLACEINFILE2) |
@WebMethod(operationName = OPERATION_REPLACEINFILE2) |
public abstract ReturnCode replaceInFile2( |
@WebParam(name = FileResource.XML_NAME) FileResource res, |
@WebParam(name = "patternList") List<ReplacePattern> patternList) throws XServicesFault; |
/** |
* @param res |
* @param search |
* @param replace |
* @param flags |
* @return |
* @throws XServicesFault |
*/ |
@WSDLDocumentation(value = XServicesDocumentation.SERVICE_OPERATION_REPLACEINFILEREGEX) |
@WebMethod(operationName = OPERATION_REPLACEINFILEREGEX) |
public abstract ReturnCode replaceInFileRegEx( |
@WebParam(name = FileResource.XML_NAME) FileResource res, |
@WebParam(name = "search") String search, |
@WebParam(name = "replace") String replace, |
@WebParam(name = "flags") String flags) throws XServicesFault; |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/JobService.java |
---|
0,0 → 1,104 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import java.util.List; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import javax.xml.bind.annotation.XmlElement; |
import net.brutex.xservices.types.ScheduledJob; |
import net.brutex.xservices.types.SchedulerStatisticsType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.annotations.WSDLDocumentation; |
/** |
* Job management services. |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface JobService { |
public static final String SERVICE_NAME = "JobService"; |
final String OPERATION_GETJOBLIST = "getJobs"; |
final String OPERATION_SCHEDULEJOB = "scheduleJob"; |
final String OPERATION_GETJOB = "getJob"; |
final String OPERATION_DELETEJOB = "deleteJob"; |
final String OPERATION_GETSTATISTICS = "getStatistics"; |
final String PARAM_JOB = "job"; |
/** |
* Get a full list of all scheduled jobs. |
* |
* @return List of scheduled jobs |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_GETJOBLIST) |
@WSDLDocumentation(value="Get list of scheduled jobs") |
public abstract List<ScheduledJob> getJobList() throws XServicesFault; |
/** |
* Add a job to the scheduler. |
* |
* @param job |
* @return The unique identifier of the job. |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_SCHEDULEJOB) |
@WSDLDocumentation(value="Schedule a job") |
public abstract String scheduleJob( |
@WebParam(name=PARAM_JOB) @XmlElement(required=true) ScheduledJob job) |
throws XServicesFault; |
/** |
* Get a job by id. |
* |
* @param uuid |
* @return Job details |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_GETJOB) |
@WSDLDocumentation(value="Get a job by id") |
public abstract ScheduledJob getJob( |
@WebParam(name="id") @XmlElement(required=true) String uuid) throws XServicesFault; |
/** |
* Delete a job from scheduler. |
* |
* @param uuid Id of the job that should be deleted |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_DELETEJOB) |
@WSDLDocumentation(value="Delete a scheduled job.") |
public abstract void deleteJob( |
@WebParam(name="id") @XmlElement(required=true) String uuid) throws XServicesFault; |
/** |
* Get statisctis about the scheduler |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_GETSTATISTICS) |
@WSDLDocumentation(value="Get scheduler statistics") |
public abstract SchedulerStatisticsType getStatistics() throws XServicesFault; |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/MiscService.java |
---|
0,0 → 1,93 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
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 org.apache.cxf.aegis.type.java5.XmlElement; |
import org.apache.cxf.aegis.type.java5.XmlReturnType; |
import org.apache.cxf.annotations.WSDLDocumentation; |
/** |
* Bundles various methods |
* |
* @author Brian Rosenberger, bru@brutex.de |
* @since 0.4.0 |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
@WSDLDocumentation("Various service operations.") |
public interface MiscService { |
public static final String OPERATION_GETMEMORY = "getMemory"; |
/** |
* Get IP address from host name. |
* |
* @param hostname |
* @return ReturnCode |
*/ |
@WebMethod(operationName = "getHostinfo") |
@WSDLDocumentation(value = "Get information about a host.") |
public HostinfoType getHostinfo( |
@WebParam(name = "hostname") @XmlElement(minOccurs="1", nillable=false ) String hostname); |
/** |
* Delay execution for a given time. |
* |
* @param minutes |
* @param seconds |
* @return ReturnCode |
*/ |
@WebMethod(operationName = "sleep") |
@WSDLDocumentation(value = "Delay request response a specified duration.") |
public ReturnCode sleep( |
@WebParam(name = "minutes") int minutes, |
@WebParam(name = "seconds") int seconds); |
/** |
* @return ReturnCode |
*/ |
@WebMethod(operationName = "getInfo") |
@WSDLDocumentation(value = "Get XService information.") |
public ReturnCode getInfo(); |
/** |
* Generate a UUID |
* @return new UUID |
*/ |
@WebMethod(operationName = "generateUUID") |
@WSDLDocumentation(value = "Generate a UUID.") |
public String generateUUID(); |
/** |
* Get Memory information |
*/ |
@WebMethod(operationName = MiscService.OPERATION_GETMEMORY) |
@WSDLDocumentation(value = "Get memory and processor information") |
public RuntimeInfoType getMemory(); |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/MailService.java |
---|
0,0 → 1,123 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import javax.xml.bind.annotation.XmlElement; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.MailMimeType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.types.ant.FileSetResource; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.annotations.WSDLDocumentation; |
/** |
* Bundles various method for sending and receiving mails |
* |
* @author Brian Rosenberger, bru@brutex.de |
* @since 2.0.0 |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
@WSDLDocumentation("Various mail service operations.") |
public interface MailService { |
final String PARAM_SMTPHOST = "mailhost"; |
final String PARAM_SENDER = "from"; |
final String PARAM_RECEIVER = "to"; |
final String PARAM_SUBJECT = "subject"; |
final String PARAM_MESSAGE = "message"; |
final String PARAM_ATTACHMENTS = "attachments"; |
/** |
* Simple mail send operation with sender, single receiver, subject and message. |
* |
* @param mailhost connection details for the SMTP server to use |
* @param from mail address to be used as sender |
* @param tolist mail address of the receiver |
* @param subject subject of the mail |
* @param message mail body |
* @return ReturnCode |
*/ |
@WebMethod(operationName = "sendMailSimple") |
@WSDLDocumentation(value = "Send an email (simple).") |
public ReturnCode sendMailSimple( |
@WebParam(name = PARAM_SMTPHOST) @XmlElement(required=true, nillable=false) HostConnection mailhost, |
@WebParam(name = PARAM_SENDER) @XmlElement(required=true) String from, |
@WebParam(name = PARAM_RECEIVER) @XmlElement(required=true, nillable=false) String tolist, |
@WebParam(name = PARAM_SUBJECT) String subject, |
@WebParam(name = PARAM_MESSAGE) String message); |
/** |
* Simple mail send operation with sender, single receiver, subject and message |
* including support for file attachments. |
* |
* @param mailhost connection details for the SMTP server to use |
* @param from mail address to be used as sender |
* @param tolist mail address of the receiver |
* @param subject subject of the mail |
* @param message mail body |
* @param res attachments |
* @return ReturnCode |
*/ |
@WebMethod(operationName = "sendMailSimpleWithAttachment") |
@WSDLDocumentation(value = "Send an email with attachment (simple).") |
public ReturnCode sendMailSimpleWithAttachment( |
@WebParam(name = PARAM_SMTPHOST) @XmlElement(required=true, nillable=false) HostConnection mailhost, |
@WebParam(name = PARAM_SENDER) @XmlElement(required=true, nillable=false) String from, |
@WebParam(name = PARAM_RECEIVER) @XmlElement(required=true, nillable=false) String tolist, |
@WebParam(name = PARAM_SUBJECT) String subject, |
@WebParam(name = PARAM_MESSAGE) String message, |
@WebParam(name = PARAM_ATTACHMENTS) FileSetResource res); |
/** |
* Send email with a lot of options |
* |
* @param mailhost connection details for the SMTP server to use |
* @param from mail address to be used as sender |
* @param tolist mail address of the receiver |
* @param cclist mail carbon copy receiver |
* @param bcclist mail blind carbon copy receiver |
* @param subject subject of the mail |
* @param mimetype message MIME type (i.e. text/plain) |
* @param charset character set to use (i.e. utf-8, iso-8859-15) |
* @param message mail body |
* @param res attachments |
* @param ssl use SSL |
* @param tls use TLS |
* @return ReturnCode |
*/ |
@WebMethod(operationName = "sendMail") |
@WSDLDocumentation(value = "Send an email (advanced).") |
public ReturnCode sendMail( |
@WebParam(name = PARAM_SMTPHOST) @XmlElement(required=true, nillable=false) HostConnection mailhost, |
@WebParam(name = PARAM_SENDER) @XmlElement(required=true, nillable=false) String from, |
@WebParam(name = PARAM_RECEIVER) @XmlElement(required=true, nillable=false) String tolist, |
@WebParam(name = "cc") String cclist, |
@WebParam(name = "bcc") String bcclist, |
@WebParam(name = PARAM_SUBJECT) String subject, |
@WebParam(name = "mimetype") MailMimeType mimetype, |
@WebParam(name = "charset") String charset, |
@WebParam(name = PARAM_MESSAGE) String message, |
@WebParam(name = PARAM_ATTACHMENTS) FileSetResource res, |
@WebParam(name = "useSSL") boolean ssl, |
@WebParam(name = "useStartTLS") boolean tls); |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/XServicesFault.java |
---|
0,0 → 1,99 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import java.util.GregorianCalendar; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
import javax.xml.bind.annotation.XmlType; |
import javax.xml.datatype.DatatypeConfigurationException; |
import javax.xml.datatype.DatatypeFactory; |
import javax.xml.datatype.XMLGregorianCalendar; |
import javax.xml.ws.WebFault; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Generic web service fault. |
* |
* @author Brian Rosenberger, bru@brutex.de |
* since 0.4.0 |
*/ |
@WebFault(targetNamespace=BrutexNamespaces.WS_XSERVICES) |
public class XServicesFault extends Exception { |
/** |
* |
*/ |
private static final long serialVersionUID = -6779279189376374820L; |
public XServicesFault(String message, Exception e) { |
this(message, e.getCause()); |
} |
public XServicesFault(String string) { |
this(string, new Exception(string).getCause()); |
} |
public XServicesFault(Exception e) { |
this(e.getMessage(), e.getCause()); |
} |
public XServicesFault(String message, Throwable cause) { |
super(message, cause); |
this.faultstring=message; |
try { |
timestamp = DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()); |
} catch (DatatypeConfigurationException ex) { |
System.err.println(ex.getMessage()); |
} |
} |
/** |
* The error message. |
*/ |
@XmlElement(name="faultstring", namespace=BrutexNamespaces.WS_XSERVICES) |
public String faultstring = ""; |
/** |
* Username under which the web service has been executed. |
*/ |
@XmlElement(name="username", namespace=BrutexNamespaces.WS_XSERVICES) |
public String username = System.getProperty("user.name"); |
/** |
* Home directory of the user profile running the web service. |
*/ |
@XmlElement(name="homedir", namespace=BrutexNamespaces.WS_XSERVICES) |
public String homedir = System.getProperty("user.home"); |
/** |
* Timestamp when the fault was thrown. |
*/ |
@XmlElement(name="timstamp", namespace=BrutexNamespaces.WS_XSERVICES) |
public XMLGregorianCalendar timestamp = null; |
/** |
* Java runtime version. |
*/ |
@XmlElement(name="jvmversion") |
public String jvmruntime = System.getProperty("java.version"); |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/ArchiveService.java |
---|
0,0 → 1,205 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.CompressionType; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.types.ant.ArchiveResource; |
import net.brutex.xservices.types.ant.FileResource; |
import net.brutex.xservices.types.ant.FileSetResource; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Archiving related web service. |
* |
* @author Brian Rosenberger, bru@brutex.de |
* @since 0.4.0 |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface ArchiveService { |
final String WS_OPERATION_BZIP2 = "bzip2"; |
final String WS_OPERATION_BZIP2_ARCHIVE = "bzip2FromArchive"; |
final String WS_OPERATION_GZIP = "gzip"; |
final String WS_OPERATION_GZIP_ARCHIVE = "gzipFromArchive"; |
final String WS_OPERATION_UNZIP = "unzip"; |
final String WS_OPERATION_GUNZIP = "gunzip"; |
final String WS_OPERATION_BUNZIP2 = "bunzip2"; |
final String WS_PARAM_SOURCEFILE = "source"; |
final String WS_PARAM_SOURCEFILE_STRING = "srcfile"; |
final String WS_PARAM_SOURCEURL = "srcurl"; |
final String WS_PARAM_SOURCEARCHIVE = "archivesource"; |
final String WS_PARAM_DESTFILE = "destfile"; |
final String WS_PARAM_DESTDIR = "destdir"; |
final String WS_PARAM_ENCODING = "encoding"; |
final String WS_PARAM_OVERWRITE = "overwrite"; |
final String WS_PARAM_COMPRESS = "compresslevel"; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_BZIP2, action = WS_OPERATION_BZIP2) |
public ReturnCode bzip2(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_BZIP2_ARCHIVE, action = WS_OPERATION_BZIP2_ARCHIVE) |
public ReturnCode bzip2FromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_GZIP, action = WS_OPERATION_GZIP) |
public ReturnCode gzip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_GZIP_ARCHIVE, action = WS_OPERATION_GZIP_ARCHIVE) |
public ReturnCode gzipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_GUNZIP, action = WS_OPERATION_GUNZIP) |
public ReturnCode gunzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = WS_OPERATION_BUNZIP2) |
public ReturnCode bunzip2(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "gunzipFromURL") |
public ReturnCode gunzipFromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "bunzip2FromURL") |
public ReturnCode bunzip2FromURL(@WebParam(name = WS_PARAM_SOURCEURL) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @param overwrite |
* @param encoding |
* @param level |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "zip") |
public ReturnCode zip(@WebParam(name = WS_PARAM_SOURCEFILE) FileResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = WS_PARAM_COMPRESS) int level) throws XServicesFault; |
/** |
* @param src |
* @param file |
* @param update |
* @param encoding |
* @param level |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "zipFromArchive") |
public ReturnCode zipFromArchive(@WebParam(name = WS_PARAM_SOURCEARCHIVE) ArchiveResource src, |
@WebParam(name = WS_PARAM_DESTFILE) String file, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean update, |
@WebParam(name = WS_PARAM_ENCODING) String encoding, |
@WebParam(name = "compresslevel") int level) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @param overwrite |
* @param encoding |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "unzip") |
public ReturnCode unzip(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = WS_PARAM_ENCODING) String encoding) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "unrar") |
public ReturnCode unrar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest) throws XServicesFault; |
/** |
* @param src |
* @param dest |
* @param overwrite |
* @param compression |
* @return |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "untar") |
public ReturnCode untar(@WebParam(name = WS_PARAM_SOURCEFILE_STRING) String src, |
@WebParam(name = WS_PARAM_DESTDIR) String dest, |
@WebParam(name = WS_PARAM_OVERWRITE) boolean overwrite, |
@WebParam(name = "compression") CompressionType compression) throws XServicesFault; |
} |
/xservices/trunk/src/java/net/brutex/xservices/ws/StorageService.java |
---|
0,0 → 1,84 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import net.brutex.xservices.types.TargetNodeType; |
import net.brutex.xservices.types.ant.AttachmentType; |
import net.brutex.xservices.types.ant.CollectionType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.annotations.WSDLDocumentation; |
/** |
* Storage management services. |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface StorageService { |
public static final String SERVICE_NAME = "StorageService"; |
final String OPERATION_STORETEXT = "storeText"; |
final String OPERATION_STOREBINARY = "storeBinary"; |
final String OPERATION_CREATECOLLECTION = "createCollection"; |
final String OPERATION_DELIVERCOLLECTION = "deliverCollection"; |
final String PARAM_TEXT = "text"; |
final String PARAM_BINARY = "binary"; |
final String PARAM_NAME = "name"; |
final String PARAM_COLLECTION = "collection"; |
final String PARAM_TARGETNODE = "target"; |
final String PARAM_RAISEEVENT = "event"; |
; |
/** |
* Store text based data. |
* @param text text to be stored |
* |
* @return uuid reference to stored object |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_STORETEXT) |
@WSDLDocumentation(value="Store text based data") |
public abstract String storeText(@WebParam(name = PARAM_TEXT) String text) throws XServicesFault; |
@WebMethod(operationName=OPERATION_STOREBINARY) |
@WSDLDocumentation(value="Store binary data") |
public abstract String storeBinary( |
@WebParam(name= PARAM_BINARY) AttachmentType binary) |
throws XServicesFault; |
@WebMethod(operationName=OPERATION_CREATECOLLECTION) |
@WSDLDocumentation(value="Create a new Collection by name.") |
public abstract String createCollection( |
@WebParam(name= PARAM_COLLECTION) CollectionType collection) |
throws XServicesFault; |
@WebMethod(operationName=OPERATION_DELIVERCOLLECTION) |
@WSDLDocumentation(value="Deliver a collection to a target node (asynchronous).") |
public abstract void deliverCollection( |
@WebParam(name= PARAM_COLLECTION) CollectionType collection, |
@WebParam(name= PARAM_TARGETNODE) TargetNodeType targetnode, |
@WebParam(name= PARAM_RAISEEVENT) boolean isFiring) |
throws XServicesFault; |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/DateService.java |
---|
0,0 → 1,255 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import java.math.BigInteger; |
import java.util.Date; |
import java.util.GregorianCalendar; |
import java.util.List; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.datatype.XMLGregorianCalendar; |
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 org.apache.cxf.annotations.WSDLDocumentation; |
import org.apache.cxf.annotations.WSDLDocumentationCollection; |
/** |
* Date and time related services. |
* @author Brian Rosenberger |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
@WSDLDocumentationCollection( |
{ |
@WSDLDocumentation(value = BrutexNamespaces.BRUTEX_COPYRIGHT, placement = WSDLDocumentation.Placement.TOP) |
} |
) |
public interface DateService { |
public static final String SERVICE_NAME = "DateService"; |
final String OPERATION_GETDATE = "getDate"; |
final String OPERATION_GETDATEEXTENDED = "getDateExtended"; |
final String OPERATION_GETTIMESTAMP = "getTimestamp"; |
final String OPERATION_GETTIMESTAMP2 = "getTimestamp2"; |
final String OPERATION_GETINTIMEZONE = "getInTimezone"; |
final String OPERATION_FORMATDATE = "formatDate"; |
final String OPERATION_FORMATDATEADVANCED = "formatDateAdvanced"; |
final String OPERATION_PARSEDATE = "parseDate"; |
final String OPERATION_PARSEDATEADVANCED = "parseDateAdvanced"; |
final String OPERATION_DATETIMEDIFF = "dateTimeDiff"; |
final String OPERATION_DATETIMEDIFF2 = "dateTimeDiff2"; |
final String OPERATION_DATEADD = "dateAdd"; |
final String OPERATION_GETTIMEZONES = "getTimezones"; |
final String PARAM_TIMEZONE = "timezone"; |
final String PARAM_DATETIME = "datetime"; |
final String PARAM_FORMAT = "format"; |
final String PARAM_UNIT = "unit"; |
/** |
* Get current date and time. |
* |
* @return Current date and time. |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_GETDATE) |
@WSDLDocumentation(value="Get current date and time.") |
public abstract DateInfoType getDate() |
throws XServicesFault; |
/** |
* Get current date and time (extended version). |
* |
* @return Current date and time. |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_GETDATEEXTENDED) |
@WSDLDocumentation(value="Get current date and time in different formats.") |
public abstract DateInfoExtendedType getDateExtended() |
throws XServicesFault; |
/** |
* Get milliseconds since 01.01.1970. |
* |
* @return timestamp milliseconds |
*/ |
@WebMethod(operationName=OPERATION_GETTIMESTAMP) |
@WSDLDocumentation(value="Get milliseconds since 01.01.1970 (Unix timestap).") |
public abstract BigInteger getTimestamp(); |
/** |
* Get seconds since 01.01.1970. |
* |
* @return timestamp seconds |
*/ |
@WebMethod(operationName=OPERATION_GETTIMESTAMP2) |
@WSDLDocumentation(value="Get seconds since 01.01.1970 (Unix timestap).") |
public abstract BigInteger getTimestamp2(); |
/** |
* Display a date time with a different time zone. |
* Changes representation only (no conversion). |
* |
* @param cal date time. |
* @param timezone time zone |
* @return date time |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_GETINTIMEZONE) |
public abstract String getInTimezone( |
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) Date cal, |
@WebParam(name=PARAM_TIMEZONE) @XmlElement(required=true) String timezone) throws XServicesFault; |
/** |
* Formats a date with pre-defined patterns. |
* |
* @param cal date time to be formatted in ISO8601 |
* @param format Pattern to be used for date formating |
* @return formatted date/time string |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_FORMATDATE) |
public abstract String formatDate( |
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) Date cal, |
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) DateFormatType format) throws XServicesFault; |
@WebMethod(operationName=OPERATION_GETTIMEZONES) |
public abstract List<TimeZoneType> getTimezones() throws XServicesFault; |
/** |
* Formats a date with a free form pattern. |
* Uses SimpleDateFormat patterns |
* The following pattern letters are defined (all other characters from 'A' to 'Z' and from 'a' to 'z' are reserved): |
Letter Date or Time Component Presentation Examples |
G Era designator Text AD |
y Year Year 1996; 96 |
M Month in year Month July; Jul; 07 |
w Week in year Number 27 |
W Week in month Number 2 |
D Day in year Number 189 |
d Day in month Number 10 |
F Day of week in month Number 2 |
E Day in week Text Tuesday; Tue |
a Am/pm marker Text PM |
H Hour in day (0-23) Number 0 |
k Hour in day (1-24) Number 24 |
K Hour in am/pm (0-11) Number 0 |
h Hour in am/pm (1-12) Number 12 |
m Minute in hour Number 30 |
s Second in minute Number 55 |
S Millisecond Number 978 |
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 |
Z Time zone RFC 822 time zone -0800 |
* @param cal Date time to be formatted |
* @param format Format string |
* @return Date time formatted according to format string |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_FORMATDATEADVANCED) |
public abstract String formatDateAdvanced( |
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) Date cal, |
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) String format) throws XServicesFault; |
/** |
* Converts a string into date using pre-defined date formats. |
* |
* @param s Date/ time as string |
* @param format date format |
* @param timezone timezone |
* @return XML Date |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_PARSEDATE) |
@WSDLDocumentation(value="Converts a string into date using pre-defined date formats.") |
public abstract Date parseDate( |
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) String s, |
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) DateFormatType format, |
@WebParam(name=PARAM_TIMEZONE) String timezone) throws XServicesFault; |
/** |
* Converts a string into date using any format. |
* @param s date/ time as string |
* @param format date format |
* @param timezone timezone |
* @return XML Date |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_PARSEDATEADVANCED) |
public abstract GregorianCalendar parseDateAdvanced( |
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) String s, |
@WebParam(name=PARAM_FORMAT) @XmlElement(required=true) String format, |
@WebParam(name=PARAM_TIMEZONE) String timezone) throws XServicesFault; |
/** |
* Calculate elapsed time between two dates. |
* @param fromCal First date. |
* @param toCal Second date. |
* @return Elapsed time in milliseconds |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_DATETIMEDIFF) |
public abstract BigInteger dateTimeDiff( |
@WebParam(name="fromDateTime") @XmlElement(required=true) Date fromCal, |
@WebParam(name="toDateTime") @XmlElement(required=true) Date toCal) throws XServicesFault; |
/** |
* Fully elapsed units between two dates. |
* 4:15:10-4:15:55 in minutes = 0 and in seconds = 45 |
* |
* @param fromCal |
* @param toCal |
* @param unit |
* @return Date/time difference in unit |
* @throws XServicesFault |
*/ |
@WebMethod(operationName=OPERATION_DATETIMEDIFF2) |
@WSDLDocumentation(value="Get elapsed time between to dates.") |
public abstract BigInteger dateTimeDiff2( |
@WebParam(name="fromDateTime") @XmlElement(required=true) Date fromCal, |
@WebParam(name="toDateTime") @XmlElement(required=true) Date toCal, |
@WebParam(name=PARAM_UNIT) DateTimeUnits unit) throws XServicesFault; |
/** |
* Add or subtract a time span from a date. |
* |
* @param cal The initial date. |
* @param value The amount to add. |
* @param unit The unit the amount is defined in. |
* @return New date and time. |
* @throws XServicesFault |
* |
*/ |
@WebMethod(operationName=OPERATION_DATEADD) |
@WSDLDocumentation(value="Add or substract a time span from a date.") |
public abstract GregorianCalendar dateAdd( |
@WebParam(name=PARAM_DATETIME) @XmlElement(required=true) GregorianCalendar cal, |
@WebParam(name="value") @XmlElement(required=true) BigInteger value, |
@WebParam(name=PARAM_UNIT) @XmlElement(required=true) DateTimeUnits unit) throws XServicesFault; |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/ws/ExecuteService.java |
---|
0,0 → 1,145 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws; |
import javax.jws.WebMethod; |
import javax.jws.WebParam; |
import javax.jws.WebService; |
import javax.xml.bind.annotation.XmlElement; |
import net.brutex.xservices.types.HostConnection; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Task execution web service |
* |
* @author Brian Rosenberger |
* @since 0.1.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES) |
public interface ExecuteService { |
/** |
* @param cmd |
* @param args |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommand") |
public abstract ReturnCode runCommand( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param cmd |
* @param args |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommandWithArgs") |
public abstract ReturnCode runCommandWithArgs( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param cmd |
* @param args |
* @return |
*/ |
@WebMethod(operationName = "runCommandAsync") |
public abstract ReturnCode runCommandAsync( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "argline") String args); |
/** |
* @param cmd |
* @param args |
* @return |
*/ |
@WebMethod(operationName = "runCommandAsyncWithArgs") |
public abstract ReturnCode runCommandAsyncWithArgs( |
@WebParam(name = "executable") String cmd, |
@WebParam(name = "arg") String[] args); |
/** |
* @param host |
* @param cmd |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommandWithSSH") |
public abstract ReturnCode runCommandWithSSH( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param host |
* @param keyfile |
* @param cmd |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "runCommandWithSSHKeyAuth") |
public abstract ReturnCode runCommandWithSSHKeyAuth( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "keyfile") String keyfile, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param host |
* @param cmd |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "rExec") |
public abstract ReturnCode rExec( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param host |
* @param prompt |
* @param cmd |
* @param expect |
* @param timeout |
* @return |
*/ |
@WebMethod(operationName = "telnet") |
public abstract ReturnCode runTelnet( |
@WebParam(name = "host") HostConnection host, |
@WebParam(name = "prompt") String prompt, |
@WebParam(name = "command") String cmd, |
@WebParam(name = "expect") String expect, |
@WebParam(name = "timeout") long timeout); |
/** |
* @param script |
* @throws XServicesFault |
*/ |
@WebMethod(operationName = "runJavaScript") |
public abstract void runJScript( |
@WebParam(name = "script") @XmlElement(required=true) String script) throws XServicesFault; |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/StringSplitType.java |
---|
0,0 → 1,40 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.util.ArrayList; |
import java.util.List; |
import javax.xml.bind.annotation.XmlType; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
@XmlType |
public class StringSplitType |
{ |
public final List<String> stringlist = new ArrayList(); |
public int size = 0; |
public synchronized void addStringMatch(String token) |
{ |
this.stringlist.add(token); |
this.size += 1; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/NamespaceListType.java |
---|
0,0 → 1,55 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.util.ArrayList; |
import java.util.List; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
@XmlRootElement |
public class NamespaceListType |
{ |
private List<NamespaceType> list = new ArrayList<NamespaceType>(); |
/** |
* @return |
*/ |
@XmlElement(name="namespace") |
public List<NamespaceType> getNamespaces() { |
return this.list; |
} |
/** |
* @param ns |
*/ |
public void addNamespace(NamespaceType ns) { |
this.list.add(ns); |
} |
/** |
* |
*/ |
public void clearNamespaceList() { |
this.list.clear(); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/NamespaceType.java |
---|
0,0 → 1,57 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.net.URI; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
@XmlType(name="namespace", namespace="http://ws.xservices.brutex.net") |
public class NamespaceType |
{ |
public static final String XML_NAME = "namespace"; |
private String prefix; |
private URI uri; |
public String getPrefix() |
{ |
return this.prefix; |
} |
@XmlElement(required=true) |
public void setPrefix(String prefix) |
{ |
this.prefix = prefix; |
} |
public URI getUri() |
{ |
return this.uri; |
} |
@XmlElement(nillable=true, required=true) |
public void setUri(URI uri) |
{ |
this.uri = uri; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/DateInfoType.java |
---|
0,0 → 1,66 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.util.Date; |
import java.util.GregorianCalendar; |
import java.util.TimeZone; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.types.DateFormatType; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
@XmlType(name="DateInfoType", namespace="http://ws.xservices.brutex.net", propOrder={"isoDate", "rfcDate", "millis"}) |
public class DateInfoType |
{ |
public static final String XML_NAME = "DateInfoType"; |
private final GregorianCalendar date; |
private final TimeZone zone; |
public DateInfoType(GregorianCalendar date, TimeZone zone) |
{ |
this.date = date; |
this.zone = zone; |
} |
public DateInfoType() |
{ |
this.zone = TimeZone.getDefault(); |
this.date = new GregorianCalendar(this.zone); |
} |
@XmlElement(name="timestamp") |
public long getMillis() |
{ |
return this.date.getTimeInMillis(); |
} |
@XmlElement(name="iso8601date") |
public Date getIsoDate() |
{ |
return this.date.getTime(); |
} |
@XmlElement(name="rfc822date") |
public String getRfcDate() |
{ |
return DateFormatType.RFC822.format(this.date.getTime(), null, null); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/ContainsSelectorType.java |
---|
0,0 → 1,53 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import org.apache.tools.ant.types.selectors.ContainsSelector; |
import org.apache.tools.ant.types.selectors.FileSelector; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType |
public class ContainsSelectorType implements SelectorTypeInterface { |
public static final String XML_NAME="contains"; |
public ContainsSelectorType() { |
} |
public FileSelector getSelector() { |
ContainsSelector selector = new ContainsSelector(); |
selector.setCasesensitive(casesensitive); |
selector.setText(text); |
selector.setIgnorewhitespace(ignorewhitespace); |
return selector; |
} |
@XmlElement(required=true, nillable=false) |
public String text; |
@XmlElement(required=true, defaultValue="true") |
public boolean casesensitive; |
@XmlElement(required=true, defaultValue="false") |
public boolean ignorewhitespace; |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/SelectorType.java |
---|
0,0 → 1,36 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.util.List; |
import javax.xml.bind.annotation.XmlElement; |
import org.apache.tools.ant.types.selectors.FileSelector; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public abstract class SelectorType implements SelectorTypeInterface { |
public SelectorType() { |
} |
@XmlElement(name=ContainsSelectorType.XML_NAME, nillable=true) |
public List<ContainsSelectorType> contains; |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/FileSetResource.java |
---|
0,0 → 1,132 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.io.File; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlType; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.FileSet; |
import org.apache.tools.ant.types.Resource; |
import org.apache.tools.ant.types.TarFileSet; |
import org.apache.tools.ant.types.ZipFileSet; |
/** |
* Set of files from various sources. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name = "FileSetType", namespace = "http://ws.xservices.brutex.net", |
propOrder = {"type", "source", "filter", "excludes", "casesensitive"}) |
public class FileSetResource implements ResourceSetInterface { |
public static final String XML_NAME = "fileset"; |
/** |
* Type of FileSet |
*/ |
@XmlElement(name = "FileSetType", required = true, nillable = false, defaultValue = "FILES") |
public FileSetType type = FileSetType.FILES; |
/** |
* File set source. |
* |
* Depends on the file set type. This is either an archive file or a |
* directory. |
*/ |
@XmlElement(name = "source", required = true, nillable = false) |
public String source = ""; |
/** |
* Pattern of files to include. |
* |
*/ |
@XmlElement(name = PatternSetType.XML_NAME, required = true, nillable = true) |
public PatternSetType filter; |
/** |
* Pattern of files to exclude. |
*/ |
@XmlElement(name = "excludes", required = false, nillable = true, defaultValue = "") |
public String excludes = ""; |
/** |
* Case sensitivity for include/ exclude patterns. |
*/ |
@XmlElement(name = "casesensitive", required = true, nillable = false, defaultValue = "true") |
public boolean casesensitive = true; |
/** |
* Get Ant FileSet for this file set. |
* |
* @param p Ant project |
* @return Ant FileSet for this file set. |
*/ |
public FileSet getAntResource(Project p) { |
FileSet set = null; |
switch (type) { |
case ZIP: |
ZipFileSet zset = new ZipFileSet(); |
zset.setSrc(new File(source)); |
zset.setEncoding(System.getProperty("file.encoding")); |
set = zset; |
break; |
case TAR: |
TarFileSet tset = new TarFileSet(); |
tset.setSrc(new File(source)); |
set = tset; |
break; |
case GZTAR: |
Resource res = new FileResource(FileResource.Type.GZIP, source).getAntResource(p); |
TarFileSet gzset = new TarFileSet(); |
gzset.setSrcResource(res); |
set = gzset; |
break; |
default: //FILES |
set = new FileSet(); |
set.setDir(new File(source)); |
} |
set.setProject(p); |
//set.setIncludes(includes); |
set.setExcludes(excludes); |
set.setCaseSensitive(casesensitive); |
return set; |
} |
/** |
* File set types. |
*/ |
@XmlEnum() |
@XmlType(name="resourcetype") |
public enum FileSetType { |
/** |
* Set of files (this is based on a directory, so provide a path only |
* as file set source). |
*/ |
FILES, |
/** |
* Set of files inside a ZIP archive. |
*/ |
ZIP, |
/** |
* Set of files inside a TAR archive (without compression). |
*/ |
TAR, |
/** |
* Set of files inside a gzip compressed TAR archive. |
*/ |
GZTAR |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/SelectorTypeInterface.java |
---|
0,0 → 1,27 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import org.apache.tools.ant.types.selectors.FileSelector; |
/** |
* |
* @author Brian Rosenberger |
*/ |
public interface SelectorTypeInterface { |
public FileSelector getSelector(); |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/ResourceSetInterface.java |
---|
0,0 → 1,35 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
/** |
* Wrapper for Ant Resource Sets. A resource set |
* is simply a collection of resources. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
package net.brutex.xservices.types.ant; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.ResourceCollection; |
/** |
* Wrapper for Ant Resource Collection. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public interface ResourceSetInterface { |
public ResourceCollection getAntResource(Project p); |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/AntProperty.java |
---|
0,0 → 1,75 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Map; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
/** |
* Generic key/ value pairs. |
* |
* @author Brian Rosenberger |
*/ |
@XmlRootElement |
public class AntProperty { |
/** |
* Key of the entry. |
*/ |
@XmlElement(required=true) |
public String name =""; |
/** |
* Value of the entry. |
*/ |
@XmlElement(required=true) |
public String value=""; |
/** |
* Converts a Map<String, String> into a list of |
* AntProperties. |
* @param map The map to convert |
* @return A list of key/value pairs |
*/ |
public static List<AntProperty> createAntPropertyList(Map<String, String> map) { |
List<AntProperty> list = new ArrayList<AntProperty>(); |
for(Map.Entry<String, String> e : map.entrySet()) { |
list.add(new AntProperty(e.getKey(), e.getValue())); |
} |
return list; |
} |
/** |
* Creates a new AntProperty. |
* @param name |
* @param value |
*/ |
public AntProperty(String name, String value) { |
this.name = name; |
this.value = value; |
} |
/** |
* Creates a new AntProperty. |
*/ |
public AntProperty() { |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/FileResource.java |
---|
0,0 → 1,139 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.io.File; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.Resource; |
import org.apache.tools.ant.types.resources.BZip2Resource; |
import org.apache.tools.ant.types.resources.GZipResource; |
import org.apache.tools.ant.types.resources.URLResource; |
/** |
* File based resource declaration. |
* |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name="FileResourceType", namespace=BrutexNamespaces.WS_XSERVICES) |
public class FileResource |
implements ResourceInterface { |
public static final String XML_NAME = "file"; |
/** |
* File resource type. |
*/ |
@XmlElement(defaultValue = "FILE", nillable = false, required = true) |
public Type type = Type.FILE; |
/** |
* URI to file. |
* |
* Examples:<br> |
* <code>c:/path/to/myfile.txt<br> |
* /usr/share/file<br> |
* http://server/path/file.zip</code> |
*/ |
@XmlElement(nillable = false, required = true) |
public String uri; |
/** |
* File resource type. |
* |
* Defines the wrapper around the source. |
*/ |
@XmlEnum(value=String.class) |
public enum Type { |
/** |
* Plain file from OS accessible file system. |
*/ |
FILE, |
/** |
* File from URL (http, https, ftp, ...) |
*/ |
URL, |
/** |
* File from file system with on-the-fly GZIP decompression |
*/ |
GZIP, |
/** |
* File from file system with on-the-fly BZIP2 decompression |
*/ |
BZIP2 |
} |
/** |
* Creates a FileResource. |
* |
* @param type file resource type |
* @param uri file resource uri |
*/ |
public FileResource(Type type, String uri) { |
this.type = type; |
this.uri = uri; |
} |
/** |
* Create an empty FileResource |
*/ |
public FileResource() { |
} |
/** |
* Get Apache Ant Resource type. |
* |
* @param p Ant project |
* @return This FileResource as Ant Resource |
*/ |
public Resource getAntResource(Project p) { |
Resource res = null; |
switch (type) { |
case URL: |
URLResource ures = new URLResource(uri); |
res = ures; |
break; |
case GZIP: |
GZipResource gres = new GZipResource( |
new org.apache.tools.ant.types.resources.FileResource(new File(uri))); |
res = gres; |
break; |
case BZIP2: |
BZip2Resource bres = new BZip2Resource( |
new org.apache.tools.ant.types.resources.FileResource(new File(uri))); |
res = bres; |
break; |
default: |
//Default is Type FILE |
res = new org.apache.tools.ant.types.resources.FileResource(new File(uri)); |
} |
res.setProject(p); |
return res; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/PatternElement.java |
---|
0,0 → 1,31 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import javax.xml.bind.annotation.XmlType; |
import javax.xml.bind.annotation.XmlValue; |
/** |
* |
* @author brian |
*/ |
@XmlType() |
public class PatternElement { |
@XmlValue() |
public String pattern; |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/ResourceInterface.java |
---|
0,0 → 1,37 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.Resource; |
/** |
* Wrapper for a single file like Ant Resources. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public interface ResourceInterface { |
/** |
* Get this resource as Ant Resource. |
* |
* @param p Ant project |
* @return this resource as Ant Resource |
*/ |
Resource getAntResource(Project p); |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/ArchiveResource.java |
---|
0,0 → 1,123 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.io.File; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.Resource; |
import org.apache.tools.ant.types.resources.TarResource; |
import org.apache.tools.ant.types.resources.ZipResource; |
import org.apache.tools.tar.TarEntry; |
import org.apache.tools.zip.ZipEntry; |
/** |
* Resource from archive declaration. |
* |
* Defines a resource within an archive. |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(namespace = BrutexNamespaces.WS_XSERVICES, name="ArchiveResourceType") |
public class ArchiveResource |
implements ResourceInterface { |
/** |
* Archive Type. |
*/ |
@XmlElement(defaultValue = "ZIP", nillable = false, required = true) |
public ArchiveType type = ArchiveType.ZIP; |
/** |
* Archive file. |
* |
* Path and filename of the archive to use. |
*/ |
@XmlElement(nillable = false, required = true) |
public String archive; |
/** |
* URI within the archive. |
* |
* This is usually a filename or a path/filename combination. Relative paths |
* are based from the archive root. It depends on how the archive has been |
* created whether or not it is possible to use relative paths, absolute |
* paths are required otherwise. Uses "/" as separator. |
*/ |
@XmlElement(nillable = false, required = true) |
public String uri; |
/** |
* Supported archive types. |
*/ |
@XmlEnum(value=String.class) |
public enum ArchiveType { |
/** |
* Zip archive type. |
*/ |
ZIP, |
/** |
* Tar archive type, without compression |
*/ |
TAR, |
/** |
* Tar archive type, with GZIP compression |
*/ |
GZTAR |
} |
/** |
* Get Apache Ant Resource Type. |
* |
* @param p Ant project |
* @return this ArchiveResource as Ant Resource |
*/ |
public Resource getAntResource(Project p) { |
Resource res = null; |
switch (type) { |
case TAR: |
TarEntry tarentry = new TarEntry(uri); |
TarResource tres = new TarResource(new File(archive), tarentry); |
res = tres; |
break; |
case GZTAR: |
TarResource gres = new TarResource(new org.apache.tools.ant.types.resources.GZipResource( |
new org.apache.tools.ant.types.resources.FileResource( |
new File(archive))), new TarEntry(uri)); |
res = gres; |
break; |
default: //This is type ZIP also |
ZipEntry zipentry = new ZipEntry(uri); |
if (zipentry.getTime() == -1) { |
zipentry.setTime(System.currentTimeMillis()); |
} |
res = new ZipResource(new File(archive), null, zipentry); |
break; |
} |
res.setProject(p); |
return res; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/AttachmentType.java |
---|
0,0 → 1,69 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.io.File; |
import java.io.IOException; |
import javax.activation.DataHandler; |
import javax.xml.bind.annotation.XmlMimeType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.aegis.type.java5.XmlElement; |
import org.apache.cxf.aegis.type.java5.XmlType; |
/** |
* Represents a single file based attachment type. |
* @author Brian Rosenberger, bru@brutex.de |
* @since 0.4.0 |
*/ |
@XmlType(name=AttachmentType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES) |
public class AttachmentType { |
public static final String XML_NAME="attachment"; |
private DataHandler content; |
private String filename = null; |
@XmlMimeType("application/octet-stream") |
@XmlElement(minOccurs="1") |
public void setContent(DataHandler content) { |
this.content = content; |
} |
public DataHandler getContent() { |
return content; |
} |
public String getFilename() { |
if(filename==null || filename.equals("")) { |
try { |
filename = File.createTempFile("XServices_", ".tmp").getPath(); |
} catch (IOException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
} |
return filename; |
} |
public void setFilename(String filename) { |
this.filename = filename; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/PatternSetType.java |
---|
0,0 → 1,41 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.util.List; |
import javax.xml.bind.annotation.XmlElement; |
/** |
* |
* @author Brian Rosenberger |
*/ |
public class PatternSetType { |
public static final String XML_NAME = "filter"; |
@XmlElement(required=false, nillable=false, defaultValue="**/*") |
public List<PatternElement> include; |
@XmlElement(required=false, nillable=false) |
public List<PatternElement> exclude; |
@XmlElement(required=false, nillable=true) |
public SelectorType selector; |
public PatternSetType() { |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ant/CollectionType.java |
---|
0,0 → 1,84 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types.ant; |
import java.util.UUID; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
/** |
* Defines a collection of storable objects. |
* |
* @author Brian Rosenberger |
* @since 1.0 |
*/ |
@XmlType() |
public class CollectionType { |
private String name=""; |
final private UUID uuid; |
/** |
* @return the name |
*/ |
public String getName() { |
return name; |
} |
/** |
* @param name the name to set |
*/ |
@XmlElement(required=true) |
public void setName(String name) { |
this.name = name; |
} |
/** |
* @return |
*/ |
public String getUuid() { |
return uuid.toString(); |
} |
/** |
* @param name |
* @param uuid |
*/ |
public CollectionType(String name, UUID uuid) { |
this.name = name; |
this.uuid = uuid; |
} |
/** |
* @param name |
* @param uuid |
*/ |
public CollectionType(String name) { |
this.name = name; |
this.uuid = UUID.randomUUID(); |
} |
/** |
*/ |
public CollectionType() { |
this.name = ""; |
this.uuid = UUID.randomUUID(); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/StringMatchType.java |
---|
0,0 → 1,50 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.math.BigInteger; |
import java.util.ArrayList; |
import java.util.List; |
import javax.xml.bind.annotation.XmlType; |
import com.sun.xml.txw2.annotation.XmlElement; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType |
public class StringMatchType { |
public final List<StringMatchDetails> stringlist = new ArrayList<StringMatchDetails>(); |
public int size=0; |
public StringMatchType() {} |
public synchronized void addStringMatch(StringMatchDetails match) { |
this.stringlist.add(match); |
this.size++; |
} |
public synchronized void addStringMatch(long start, long end, String content) { |
StringMatchDetails details = new StringMatchDetails(start, end, content); |
this.addStringMatch( details ); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/StringMatchDetails.java |
---|
0,0 → 1,32 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
public class StringMatchDetails { |
public long startPosition; |
public long endPosition; |
public String content; |
public StringMatchDetails() { |
} |
public StringMatchDetails(long start, long end, String content) { |
this.startPosition = start; |
this.endPosition = end; |
this.content = content; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/FileInfoType.java |
---|
0,0 → 1,91 |
package net.brutex.xservices.types; |
import java.io.File; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
import javax.xml.bind.annotation.XmlType; |
@XmlRootElement |
public class FileInfoType { |
private String name; |
private String path; |
private long filesize; |
private boolean canWrite; |
private boolean isDirectory; |
public FileInfoType() { |
} |
public FileInfoType(File file) { |
this.name = file.getName(); |
this.path = file.getAbsolutePath().replace('\\', '/'); |
this.canWrite = file.canWrite(); |
this.filesize = file.length(); |
this.isDirectory = file.isDirectory(); } |
/** |
* @return the name |
*/ |
@XmlElement(name="name") |
public String getName() { |
return name; |
} |
/** |
* @param name the name to set |
*/ |
public void setName(String name) { |
this.name = name; |
} |
/** |
* @return the path |
*/ |
@XmlElement(name="path") |
public String getPath() { |
return path; |
} |
/** |
* @param path the path to set |
*/ |
public void setPath(String path) { |
this.path = path; |
} |
/** |
* @return the filesize |
*/ |
@XmlElement(name="size") |
public long getFilesize() { |
return filesize; |
} |
/** |
* @param filesize the filesize to set |
*/ |
public void setFilesize(long filesize) { |
this.filesize = filesize; |
} |
/** |
* @return the canWrite |
*/ |
@XmlElement(name="isWritable") |
public boolean isCanWrite() { |
return canWrite; |
} |
/** |
* @return the isDirectory |
*/ |
@XmlElement(name="isDirectory") |
public boolean isDirectory() { |
return isDirectory; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/RuntimeInfoType.java |
---|
0,0 → 1,63 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlElement; |
/* |
* Information about processors and memory |
*/ |
public class RuntimeInfoType { |
private final Runtime runtime = Runtime.getRuntime(); |
@XmlElement |
public int getAvailableProcessors() { |
return runtime.availableProcessors(); |
} |
@XmlElement |
public long getFreeMemory() { |
return runtime.freeMemory(); |
} |
@XmlElement |
public long getFreeMemoryMB() { |
return runtime.freeMemory() / 1024; |
} |
@XmlElement |
public long getMaxMemory() { |
return runtime.maxMemory(); |
} |
@XmlElement |
public long getMaxMemoryMB() { |
return runtime.maxMemory() / 1024; |
} |
@XmlElement |
public long getTotalMemory() { |
return runtime.totalMemory(); |
} |
@XmlElement |
public long getTotalMemoryMB() { |
return runtime.totalMemory() / 1024; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/StringReplaceType.java |
---|
0,0 → 1,37 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlType; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType |
public class StringReplaceType { |
public String string; |
public int count; |
public StringReplaceType() {} |
public StringReplaceType(String string, int count) { |
this(); |
this.string = string; |
this.count = count; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/DateTimeUnits.java |
---|
0,0 → 1,74 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlEnumValue; |
/** |
* Different pre-defined date formats. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlEnum(value = String.class) |
public enum DateTimeUnits { |
/** |
* milliseconds |
*/ |
@XmlEnumValue("milliseconds") |
MILLISECONDS("milliseconds"), |
/** |
* seconds |
*/ |
@XmlEnumValue("seconds") |
SECONDS("seconds"), |
/** |
* minutes |
*/ |
@XmlEnumValue("minutes") |
MINUTES("minutes"), |
/** |
* hours |
*/ |
@XmlEnumValue("hours") |
HOURS("hours"), |
/** |
* days |
*/ |
@XmlEnumValue("days") |
DAYS("days"), |
@XmlEnumValue("years") |
YEARS("years"); |
private String value; |
DateTimeUnits(String value) { |
this.value = value; |
} |
/** |
* Return the value of the enum. |
* @return String representation of the mime type |
*/ |
public String value() { |
return value; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/DateFormatType.java |
---|
0,0 → 1,111 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.text.ParseException; |
import java.text.SimpleDateFormat; |
import java.util.Date; |
import java.util.Locale; |
import java.util.TimeZone; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlEnumValue; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Different pre-defined date formats. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlEnum() |
public enum DateFormatType { |
/** |
* ISO 8601 format (2011-05-24T14:39+01:00) |
*/ |
@XmlEnumValue("ISO 8601") |
ISO8601("ISO 8601", "yyyy-MM-dd'T'HH:mm:ss.SSSZ"), |
/** |
* RFC822 format (2011-05-24T14:39+0100) |
*/ |
@XmlEnumValue("RFC 822") |
RFC822("RFC 822", "yyyy-MM-dd'T'HH:mm:ss.SSSZ"), |
/** |
* yyyy/mm/dd |
*/ |
@XmlEnumValue("DateOnly-slashed") |
YYYYMMDD("DateOnly-slashed", "yyyy/MM/dd"), |
/** |
* dd.mm.yyyy |
*/ |
@XmlEnumValue("DateOnly-dotted") |
DDMMYYYY("DateOnly-dotted", "dd.MM.yyyy"), |
/** |
* dd.mm.yyyy |
*/ |
@XmlEnumValue("DateOnly-dashed") |
DDMMYYYYdashed("DateOnly-dashed", "dd-MM-yyyy"); |
private String value; |
private String format; |
DateFormatType(String value, String format) { |
this.value = value; |
this.format = format; |
} |
/** |
* Return the value of the enum. |
* @return String representation of the mime type |
*/ |
public String value() { |
return value; |
} |
public String format(Date date, Locale locale, TimeZone timezone) { |
if(date==null) return ""; |
if(locale==null) locale = Locale.getDefault(); |
if(timezone==null) timezone = TimeZone.getDefault(); |
String result = ""; |
SimpleDateFormat f; |
if(this.equals(ISO8601)) { |
//apply ISO8061 hack |
f = new SimpleDateFormat(RFC822.format, locale); |
f.setTimeZone(timezone); |
result = f.format(date); |
result = result.substring(0, 26) + ":" + result.substring(26); |
} else { |
f = new SimpleDateFormat(this.format, locale); |
f.setTimeZone(timezone); |
result = f.format(date); |
} |
return result; |
} |
public Date parse(String s, Locale locale, TimeZone timezone) |
throws ParseException { |
if(locale==null) locale = Locale.getDefault(); |
if(timezone==null) timezone = TimeZone.getDefault(); |
SimpleDateFormat fin = new SimpleDateFormat(this.format, locale); |
fin.setTimeZone(timezone); |
Date date = fin.parse(s); |
return date; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/DateInfoType.java |
---|
0,0 → 1,96 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.text.SimpleDateFormat; |
import java.util.Date; |
import java.util.GregorianCalendar; |
import java.util.TimeZone; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Date object representation with different formats |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name=DateInfoType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES, |
propOrder={"isoDate","rfcDate", "millis"}) |
public class DateInfoType { |
public static final String XML_NAME="DateInfoType"; |
private final GregorianCalendar date; |
private final TimeZone zone; |
/** |
* Create a new DateInfoType |
* @param date date/time |
*/ |
public DateInfoType(GregorianCalendar date, TimeZone zone) { |
this.date = date; |
this.zone = zone; |
} |
/** |
* Create a new DateInfoType with current date/time |
*/ |
public DateInfoType() { |
this.zone = TimeZone.getDefault(); |
this.date = new GregorianCalendar(zone); |
} |
/** |
* @return milliseconds since 01.01.1970 |
*/ |
@XmlElement(name="timestamp") |
public long getMillis() { |
return date.getTimeInMillis(); |
} |
/** |
* Get date formated according to ISO8601 (done by jaxb->xsd:datetime conversion) |
* @return date |
*/ |
@XmlElement(name="iso8601date") |
public Date getIsoDate() { |
//String format = DateFormatType.ISO8601.format(); |
//SimpleDateFormat f = new SimpleDateFormat(format); |
//String text = f.format(date.getTime()); |
//Fix missing colon in java timezone |
//return text.substring(0, 22) + ":" + text.substring(22); |
return date.getTime(); |
} |
/** |
* Get date formated according to RFC822 (also java standard) |
* @return date string |
*/ |
@XmlElement(name="rfc822date") |
public String getRfcDate() { |
return DateFormatType.RFC822.format(date.getTime(), null, null); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/DateInfoExtendedType.java |
---|
0,0 → 1,69 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.text.SimpleDateFormat; |
import java.util.GregorianCalendar; |
import java.util.TimeZone; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* @author Brian Rosenberger |
* |
*/ |
@XmlType(namespace=BrutexNamespaces.WS_XSERVICES) |
public class DateInfoExtendedType extends DateInfoType { |
private GregorianCalendar date = null; |
private TimeZone zone = null; |
@SuppressWarnings("unused") |
public DateInfoExtendedType() { |
super(); |
} |
public DateInfoExtendedType(GregorianCalendar date, TimeZone zone) { |
this.date = date; |
this.zone = zone; |
} |
@XmlElement(name = "format1") |
public String getFormat1() { |
return DateFormatType.DDMMYYYY.format(date.getTime(), null, null); |
} |
/** |
* @return |
*/ |
@XmlElement(name = "format2") |
public String getFormat2() { |
return DateFormatType.YYYYMMDD.format(date.getTime(), null, null); |
} |
@XmlElement(name = "format3") |
public String getFormat3() { |
String format = "HH:mm:ss"; |
SimpleDateFormat f = new SimpleDateFormat(format); |
return f.format(date.getTime()); |
} |
// yyyy-MM-dd'T'HH:mm:ssZ |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/TimeZoneType.java |
---|
0,0 → 1,81 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.util.TimeZone; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Different pre-defined date formats. |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name=TimeZoneType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES) |
public class TimeZoneType { |
public static final String XML_NAME = "timezone"; |
private String id; |
private String displayname; |
private TimeZone timezone; |
private long offset; |
public TimeZoneType(TimeZone timezone) { |
this.timezone = timezone; |
this.id = timezone.getID(); |
this.displayname = timezone.getDisplayName(); |
this.offset = timezone.getRawOffset()/1000; |
} |
public TimeZoneType() { |
this(TimeZone.getDefault()); |
} |
/** |
* @return the id |
*/ |
@XmlElement |
public String getId() { |
return id; |
} |
/** |
* @return the displayname |
*/ |
@XmlElement |
public String getDisplayname() { |
return displayname; |
} |
/** |
* @return the timezone |
*/ |
public TimeZone getTimezone() { |
return timezone; |
} |
/** |
* @return the offset |
*/ |
@XmlElement |
public long getOffset() { |
return offset; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/ReturnCode.java |
---|
0,0 → 1,100 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.util.List; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.types.ant.AntProperty; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(namespace=BrutexNamespaces.WS_XSERVICES, name="ReturnCodeType") |
public class ReturnCode { |
/** |
* Numeric return code. |
* |
* The numeric return code of the last operation on the underlying operation |
* systen (OS). In general the return code indicates the failure or success |
* of a command. Which value indicates success is dependent on the OS, most |
* linux based systems use "0" for success. |
*/ |
@XmlElement(required=true, nillable=false) |
public int returnCode=0; |
/** |
* Standard Out as provided by the OS. |
* |
* The stdOut given by the last operation (if any). |
*/ |
@XmlElement(name="stdOut", nillable=false) |
public String stdOut=""; |
/** |
* The Standard Error as provided by the OS. |
* |
* The stdErr given by the last operation (if any). The presents of any |
* value here ususally indicates that a failure has occured. |
*/ |
@XmlElement(name="stdErr", nillable=false) |
public String stdErr=""; |
@XmlElement(name="propertyList", nillable=true) |
public List<AntProperty> property = null; |
/** |
* Create a new ReturnCode default constructor. |
*/ |
public ReturnCode() { |
} |
/** |
* Create a new ReturnCode. |
* |
* @param returnCode return code integer value |
* @param stdOut standard out string |
* @param stdErr standard error string |
*/ |
public ReturnCode(int returnCode, String stdOut, String stdErr, List<AntProperty> props) { |
this.returnCode = returnCode; |
this.stdOut = stdOut; |
this.stdErr = stdErr; |
this.property = props; |
} |
/** |
* @param key |
* @return |
*/ |
public String getProperty(String key) { |
for(AntProperty prop : this.property) { |
if(key.equals(prop.name)) return prop.value; |
} |
return null; |
} |
/** |
* @return |
*/ |
public String getStdOut() { return this.stdOut; } |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/TargetNodeType.java |
---|
0,0 → 1,60 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Defines target nodes. |
* |
* @author Brian Rosenberger |
* @since 1.0 |
*/ |
@XmlType(name=TargetNodeType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES) |
public class TargetNodeType { |
public static final String XML_NAME = "targetnode"; |
private String name=""; |
/** |
* @return the name |
*/ |
public String getName() { |
return name; |
} |
/** |
* @param name the name to set |
*/ |
@XmlElement(required=true) |
public void setName(String name) { |
this.name = name; |
} |
/** |
* |
*/ |
public TargetNodeType() { |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/HostinfoType.java |
---|
0,0 → 1,118 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.cxf.aegis.type.java5.XmlType; |
/** |
* Host information. |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name=HostinfoType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES) |
public class HostinfoType { |
public final static String XML_NAME="hostinfo"; |
private String name; |
private String domain; |
private String ip4; |
private String ip6; |
/** |
* Create a new HostinfoType. |
*/ |
public HostinfoType() { |
} |
/** |
* Create a new HostinfoType. |
* |
* @param name |
* @param domain |
* @param ip4 |
* @param ip6 |
*/ |
public HostinfoType(String name, String domain, String ip4, String ip6) { |
this.name = name; |
this.domain = domain; |
this.ip4 = ip4; |
this.ip6 = ip6; |
} |
/** |
* Get the host name. |
* |
* @return the name |
*/ |
public String getName() { |
return name; |
} |
/** |
* Set the host name. |
* |
* @param name the name to set |
*/ |
public void setName(String name) { |
this.name = name; |
} |
/** |
* Get the host domain. |
* |
* @return the domain |
*/ |
public String getDomain() { |
return domain; |
} |
/** |
* Set the host domain. |
* |
* @param domain the domain to set |
*/ |
public void setDomain(String domain) { |
this.domain = domain; |
} |
/** |
* Get the IP address version 4 representation for this host. |
* @return the ip4 |
*/ |
public String getIp4() { |
return ip4; |
} |
/** |
* Set the IP address version 4. |
* @param ip4 the ip4 to set |
*/ |
public void setIp4(String ip4) { |
this.ip4 = ip4; |
} |
/** |
* Get the IP address version 6 representation for this host. |
* @return the ip6 |
*/ |
public String getIp6() { |
return ip6; |
} |
/** |
* Set the IP address version 6 representation for this host. |
* @param ip6 the ip6 to set |
*/ |
public void setIp6(String ip6) { |
this.ip6 = ip6; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/MailMimeType.java |
---|
0,0 → 1,55 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlEnumValue; |
/** |
* MIME types for email messages. |
* This type restricts the mime types to be used within the |
* email body. |
* |
* @author Brian Rosenberger, bru@brutex.de |
* @since 0.4.0 |
*/ |
@XmlEnum(value = String.class) |
public enum MailMimeType { |
/** |
* Plain text. |
*/ |
@XmlEnumValue("text/plain") |
PLAIN("text/plain"), |
/** |
* HTML |
*/ |
@XmlEnumValue("text/html") |
HTML("text/html"); |
private String value; |
MailMimeType(String value) { |
this.value = value; |
} |
/** |
* Return the value of the enum. |
* @return String representation of the mime type |
*/ |
public String value() { |
return value; |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/ScheduledJob.java |
---|
0,0 → 1,135 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.util.GregorianCalendar; |
import javax.xml.bind.annotation.XmlAccessType; |
import javax.xml.bind.annotation.XmlAccessorType; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
import net.brutex.xservices.util.BrutexNamespaces; |
/** |
* Scheduled job type |
* |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@XmlType(namespace=BrutexNamespaces.WS_XSERVICES) |
@XmlAccessorType(XmlAccessType.FIELD) |
public class ScheduledJob { |
@XmlElement(required=true,name="name") |
private String name; |
@XmlElement(required=false, name="description") |
private String description; |
@XmlElement(required=true, name="datetime") |
private GregorianCalendar date; |
@XmlElement(name="script") |
private String script; |
/** |
* Create a new scheduled job. |
* |
* @param name Job name. |
* @param datetime Scheduled date and time. |
* @param script The script to execute. |
*/ |
public ScheduledJob(String name, GregorianCalendar datetime, String script) { |
this.name = name; |
this.date = datetime; |
this.script = script; |
this.description = null; |
} |
/** |
* Create a new scheduled job. |
* |
* @param name Job name. |
* @param datetime Scheduled date and time. |
* @param script The script to execute. |
* @param description Job description. |
*/ |
public ScheduledJob(String name, GregorianCalendar datetime, String script, String description) { |
this.name = name; |
this.date = datetime; |
this.script = script; |
this.description = description; |
} |
/** |
* Create a new scheduled job. |
*/ |
public ScheduledJob() { |
this.name = null; |
this.date=null; |
this.script=null; |
} |
/** |
* Set name of the job. |
* @param name |
*/ |
public void setName(String name) { |
this.name = name; |
} |
/** |
* Get name of the job. |
* @return job name |
*/ |
public String getName() { |
return name; |
} |
/** |
* Set scheduled date. |
* @param date |
*/ |
public void setDate(GregorianCalendar date) { |
this.date = date; |
} |
/** |
* get scheduled date. |
* @return date |
*/ |
public GregorianCalendar getDate() { |
return date; |
} |
public void setScript(String script) { |
this.script = script; |
} |
public String getScript() { |
return script; |
} |
public void setDescription(String desc) { |
this.description = desc; |
} |
public String getDescription() { |
return description; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/ReplacePattern.java |
---|
0,0 → 1,75 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Map; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlRootElement; |
/** |
* Generic key/ value pairs. |
* |
* @author Brian Rosenberger |
*/ |
@XmlRootElement |
public class ReplacePattern { |
/** |
* Search string. |
*/ |
@XmlElement(required=true) |
public String search =""; |
/** |
* Replace string. |
*/ |
@XmlElement(required=true) |
public String replace=""; |
/** |
* Converts a Map<String, String> into a list of |
* ReplacePattern. |
* @param map The map to convert |
* @return A list of key/value pairs |
*/ |
public static List<ReplacePattern> createAntPropertyList(Map<String, String> map) { |
List<ReplacePattern> list = new ArrayList<ReplacePattern>(); |
for(Map.Entry<String, String> e : map.entrySet()) { |
list.add(new ReplacePattern(e.getKey(), e.getValue())); |
} |
return list; |
} |
/** |
* Creates a new ReplacePattern. |
* @param name |
* @param value |
*/ |
public ReplacePattern(String search, String replace) { |
this.search = search; |
this.replace = replace; |
} |
/** |
* Creates a new ReplacePattern. |
*/ |
public ReplacePattern() { |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/types/HostConnection.java |
---|
0,0 → 1,44 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlType; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name="connection") |
public class HostConnection { |
public HostConnection() { |
} |
@XmlElement(name="hostname", required=true, nillable=false) |
public String hostname; |
@XmlElement(name="port", required=false, nillable=false) |
public int port; |
@XmlElement(name="user", required=false, nillable=false) |
public String user; |
@XmlElement(name="password", required=false, nillable=false) |
public String password; |
} |
/xservices/trunk/src/java/net/brutex/xservices/types/CompressionType.java |
---|
0,0 → 1,28 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.types; |
import javax.xml.bind.annotation.XmlEnum; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlEnum() |
public enum CompressionType { |
NONE, GZIP, BZIP2 |
} |
/xservices/trunk/src/java/net/brutex/xservices/security/SecurityManager.java |
---|
0,0 → 1,11 |
package net.brutex.xservices.security; |
public abstract interface SecurityManager |
{ |
public abstract boolean canExecute(String paramString, Identity paramIdentity); |
} |
/* Location: C:\Users\brosenberger\Documents\My Box Files\XBridgeNG-download\XServices-20130131 - Kopie\WEB-INF\classes\net.zip |
* Qualified Name: net.brutex.xservices.security.SecurityManager |
* JD-Core Version: 0.6.2 |
*/ |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/security/StandardSecurityManager.java |
---|
0,0 → 1,18 |
/* */ package net.brutex.xservices.security; |
/* */ |
/* */ import java.io.PrintStream; |
/* */ |
/* */ public class StandardSecurityManager |
/* */ implements SecurityManager |
/* */ { |
/* */ public boolean canExecute(String method, Identity identity) |
/* */ { |
/* 9 */ System.out.println("User '" + identity.getUUID() + "' accesses '" + method + "'"); |
/* 10 */ return true; |
/* */ } |
/* */ } |
/* Location: C:\Users\brosenberger\Documents\My Box Files\XBridgeNG-download\XServices-20130131 - Kopie\WEB-INF\classes\net.zip |
* Qualified Name: net.brutex.xservices.security.StandardSecurityManager |
* JD-Core Version: 0.6.2 |
*/ |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/security/UserIdentity.java |
---|
0,0 → 1,17 |
/* */ package net.brutex.xservices.security; |
/* */ |
/* */ import java.util.UUID; |
/* */ |
/* */ public class UserIdentity |
/* */ implements Identity |
/* */ { |
/* */ public UUID getUUID() |
/* */ { |
/* 9 */ return UUID.randomUUID(); |
/* */ } |
/* */ } |
/* Location: C:\Users\brosenberger\Documents\My Box Files\XBridgeNG-download\XServices-20130131 - Kopie\WEB-INF\classes\net.zip |
* Qualified Name: net.brutex.xservices.security.UserIdentity |
* JD-Core Version: 0.6.2 |
*/ |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/security/Identity.java |
---|
0,0 → 1,43 |
<<<<<<< .mine |
package net.brutex.xservices.security; |
import java.util.UUID; |
public abstract interface Identity |
{ |
public abstract UUID getUUID(); |
} |
/* Location: C:\Users\brosenberger\Documents\My Box Files\XBridgeNG-download\XServices-20130131 - Kopie\WEB-INF\classes\net.zip |
* Qualified Name: net.brutex.xservices.security.Identity |
* JD-Core Version: 0.6.2 |
*/======= |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.security; |
import java.util.UUID; |
public interface Identity { |
public UUID getUUID(); |
} |
>>>>>>> .r97 |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/cache/CacheExecutorService.java |
---|
0,0 → 1,60 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util.cache; |
import java.util.concurrent.ExecutorService; |
import java.util.concurrent.Executors; |
import java.util.concurrent.ThreadFactory; |
import javax.servlet.ServletContext; |
import javax.servlet.ServletContextEvent; |
import javax.servlet.ServletContextListener; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
public class CacheExecutorService |
implements ServletContextListener |
{ |
static final String EXECUTOR_NAME = "CACHE_EXECUTOR"; |
private ExecutorService executor; |
public void contextInitialized(ServletContextEvent arg0) |
{ |
ServletContext context = arg0.getServletContext(); |
int nr_executors = 5; |
ThreadFactory daemonFactory = new DaemonThreadFactory(); |
try { |
nr_executors = Integer.parseInt(context.getInitParameter("cache:thread-count")); |
} catch (NumberFormatException localNumberFormatException) { |
} |
if (nr_executors <= 1) |
this.executor = Executors.newSingleThreadExecutor(daemonFactory); |
else { |
this.executor = Executors.newFixedThreadPool(nr_executors, daemonFactory); |
} |
context.setAttribute("CACHE_EXECUTOR", this.executor); |
} |
public void contextDestroyed(ServletContextEvent arg0) { |
ServletContext context = arg0.getServletContext(); |
this.executor.shutdownNow(); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/cache/DaemonThreadFactory.java |
---|
0,0 → 1,49 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util.cache; |
import java.util.concurrent.Executors; |
import java.util.concurrent.ThreadFactory; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
public class DaemonThreadFactory |
implements ThreadFactory |
{ |
private final ThreadFactory factory; |
public DaemonThreadFactory() |
{ |
this(Executors.defaultThreadFactory()); |
} |
public DaemonThreadFactory(ThreadFactory factory) |
{ |
if (factory == null) |
throw new NullPointerException("factory cannot be null"); |
this.factory = factory; |
} |
public Thread newThread(Runnable r) { |
Thread t = this.factory.newThread(r); |
t.setDaemon(true); |
return t; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/cache/CacheServlet.java |
---|
0,0 → 1,70 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util.cache; |
import java.io.File; |
import java.util.ArrayList; |
import java.util.Enumeration; |
import java.util.List; |
import java.util.concurrent.ExecutorService; |
import javax.servlet.ServletContext; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServlet; |
import net.brutex.xservices.types.scm.ObjectFactory; |
import org.apache.log4j.Logger; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
public class CacheServlet extends HttpServlet |
{ |
private final Logger logger = Logger.getLogger(CacheServlet.class); |
List<File> configfiles = new ArrayList(); |
int cacheinterval; |
private final ObjectFactory FACTORY = new ObjectFactory(); |
public void init() |
throws ServletException |
{ |
super.init(); |
ExecutorService executor = (ExecutorService)getServletContext() |
.getAttribute("CACHE_EXECUTOR"); |
Enumeration attributes = getServletContext() |
.getInitParameterNames(); |
while (attributes.hasMoreElements()) { |
String name = (String)attributes.nextElement(); |
if (name.startsWith("cvs-config-")) { |
String configfile = getServletContext() |
.getInitParameter(name); |
this.logger.info("CVS configuration file: " + configfile); |
this.configfiles.add(new File(configfile)); |
} |
} |
this.cacheinterval = 15; |
try { |
this.cacheinterval = Integer.parseInt(getServletContext() |
.getInitParameter("cvs-cache-interval")); |
} catch (NumberFormatException e) { |
this.logger.debug("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '" + this.cacheinterval + "' minutes"); |
} |
this.logger.info("CacheServlet set to " + this.cacheinterval + " minutes interval."); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java |
---|
0,0 → 1,346 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util.cache; |
import java.io.File; |
import java.io.IOException; |
import java.util.ArrayList; |
import java.util.Enumeration; |
import java.util.Iterator; |
import java.util.List; |
import java.util.concurrent.ExecutorService; |
import java.util.regex.Matcher; |
import java.util.regex.Pattern; |
import javax.servlet.ServletContext; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServlet; |
import javax.ws.rs.core.Response; |
import net.brutex.xservices.types.scm.ItemListType; |
import net.brutex.xservices.types.scm.ItemType; |
import net.brutex.xservices.types.scmfindings.FindingDetailsType; |
import net.brutex.xservices.types.scmfindings.FindingType; |
import net.brutex.xservices.types.scmfindings.FindingsListType; |
import net.brutex.xservices.types.scmfindings.GroupMatchListType; |
import net.brutex.xservices.types.scmfindings.ObjectFactory; |
import net.brutex.xservices.ws.rs.CVSInfoImpl; |
import org.apache.commons.configuration.ConfigurationException; |
import org.apache.commons.configuration.PropertiesConfiguration; |
import org.apache.jcs.JCS; |
import org.apache.jcs.access.exception.CacheException; |
import org.apache.log4j.Logger; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
public class FindingsCacheServlet extends HttpServlet { |
private static final long serialVersionUID = 4041338473949999960L; |
private final static Logger logger = Logger |
.getLogger(FindingsCacheServlet.class); |
private final List<File> configfiles = new ArrayList<File>(); |
private final ObjectFactory FACTORY = new ObjectFactory(); |
@Override |
public void init() throws ServletException { |
super.init(); |
ExecutorService executor = (ExecutorService) getServletContext() |
.getAttribute("CACHE_EXECUTOR"); |
if(! this.initConfigList()) return; |
if(! this.initConfigFindings()) return; |
int i = 1; |
for(File f: configfiles) { |
//Initialise configuration bean using default values |
FindingsConfigBean cbean = new FindingsConfigBean(i, Logger.getLogger("worker-"+i+ "." + this.getClass().getName())); |
i++; |
//Read cvs-cache-interval parameter |
try { |
int cacheinterval = Integer.parseInt(getServletContext() |
.getInitParameter("cvs-cache-interval")); |
cbean.setCacheinterval(cacheinterval); |
logger.info("FindingsCacheServlet set to "+ cacheinterval + " minutes interval."); |
} catch (NumberFormatException e) { |
logger.warn("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '" |
+ cbean.getCacheinterval()+ "' minutes"); |
} |
PropertiesConfiguration config = null; |
try { |
config = new PropertiesConfiguration(f); |
} catch (ConfigurationException e) { |
logger.error("Could not read parameter file at '"+f.getAbsolutePath()+"'"); |
return; |
} |
File cvsconfig = new File(config.getString("CVSROOTCONFIGFILE")); |
cbean.setCvsconfig(cvsconfig); |
FindingsCacheServlet.logger.debug("Fetching list of files using '" |
+ cvsconfig.getAbsolutePath() + "' config file"); |
List<Object> filepatterns = config.getList("FILESEARCH"); |
cbean.setFilepatterns(filepatterns); |
FindingsCacheServlet.logger.debug("Checking '" |
+ filepatterns.size() |
+ "' patterns for file name and path matching."); |
List<Object> contentpatterns = config.getList("CONTENTSEARCH"); |
cbean.setContentpatterns(contentpatterns); |
FindingsCacheServlet.logger.debug("Checking '" |
+ contentpatterns.size() |
+ "' patterns for content matching"); |
executor.submit(new ThisRunnable(cbean)); |
} |
logger.info("FindingsCacheServlet has been initialized."); |
} |
/* |
* Initialise CVS findings configuration |
*/ |
private boolean initConfigFindings() { |
String filename = getServletContext().getInitParameter( |
"cvs-findings-configuration"); |
if (filename == null) { |
logger.warn("'cvs-findings-configuration' init parameter is not specified."); |
return false; |
} |
final File findingsconfig = new File(filename); |
logger.info("CVS findings configuration file found at '" |
+ findingsconfig.getAbsolutePath() + "'"); |
if ((!findingsconfig.canRead()) || (findingsconfig.isDirectory())) { |
logger.info("CVS findings configuration file '" |
+ findingsconfig.getAbsolutePath() + "' does not exist."); |
return false; |
} |
return true; |
} |
/* |
* Add all specified CVS configuration files to the list. Parameter pattern |
* is "cvs-config-XX". |
*/ |
private boolean initConfigList() { |
Enumeration<String> attributes = getServletContext() |
.getInitParameterNames(); |
while (attributes.hasMoreElements()) { |
String name = (String) attributes.nextElement(); |
if (name.startsWith("cvs-config-")) { |
String configfile = getServletContext().getInitParameter(name); |
logger.info("Adding CVS configuration file: " + configfile); |
this.configfiles.add(new File(configfile)); |
} |
} |
/* |
* Verify, that all configuration files do exists and are readable. |
*/ |
List<File> removelist = new ArrayList<File>(); |
for (File f : configfiles) { |
if (!f.exists()) { |
logger.warn("CVS configuration file '" |
+ f.getAbsolutePath() |
+ "' is specified, but does not exist. Removing from list."); |
removelist.add(f); |
} else if (!f.canRead()) { |
logger.warn("CVS configuration file '" |
+ f.getAbsolutePath() |
+ "' does exist, but is not readable. Removing from list."); |
removelist.add(f); |
} |
} |
configfiles.removeAll(removelist); |
return true; |
} |
class ThisRunnable implements Runnable { |
boolean isInterrupted = false; |
FindingsConfigBean configuration; |
public ThisRunnable(FindingsConfigBean configuration) { |
this.configuration = configuration; |
} |
public void run() { |
CVSInfoImpl instance = new CVSInfoImpl(); |
ItemListType fileslist = (ItemListType) instance |
.getRepositoryFiles(null, configuration.getCvsconfig(), "", true, true, true) |
.getEntity(); |
ObjectFactory FACTORY = new ObjectFactory(); |
FindingsListType findingsList = FACTORY.createFindingsListType(); |
FindingsCacheServlet.logger.info("Processing '" |
+ fileslist.getItems().size() + "' files and directories."); |
while (!this.isInterrupted) { |
Pattern p; |
for (ItemType i : fileslist.getItems()) { |
if (this.isInterrupted) |
break; |
Iterator<Object> iterF = configuration.getFilepatterns().iterator(); |
while(iterF.hasNext()) { |
Object o = iterF.next(); |
if (this.isInterrupted) |
break; |
FindingsCacheServlet.logger.debug("Scanning filename '" |
+ i.getFullname() + "' for pattern '" |
+ (String) o + "'"); |
p = Pattern.compile((String) o); |
Matcher m = p.matcher(i.getFullname()); |
if (m.find()) { |
FindingType finding = FACTORY.createFindingType(); |
finding.setFilesearch(p.toString()); |
ItemType it = (ItemType) instance.getFileContent( |
null, configuration.getCvsconfig(), i.getFullname(), true) |
.getEntity(); |
finding.setContent(it.getContent()); |
finding.setData(it.getData()); |
finding = copyDetails(finding, i); |
findingsList.getFindings().add(finding); |
FindingsCacheServlet.logger |
.debug("Match found for '" |
+ i.getFullname() + "'"); |
break; |
} |
FindingsCacheServlet.logger |
.debug("No match found for '" + i.getFullname() |
+ "'"); |
} |
} |
FindingsCacheServlet.logger |
.debug("Processing file content for '" |
+ findingsList.getFindings().size() |
+ "' entries in the list."); |
for (FindingType t : findingsList.getFindings()) { |
if (this.isInterrupted) |
break; |
boolean isFound = false; |
Matcher m; |
Iterator<Object> iter = configuration.getContentpatterns().iterator(); |
while (iter.hasNext()) { |
Object o = iter.next(); |
if (this.isInterrupted) |
break; |
FindingsCacheServlet.logger |
.debug("Scanning file content for file '" |
+ t.getFullname() + "' for pattern '" |
+ (String) o + "'"); |
Pattern p1 = Pattern.compile((String) o); |
m = p1.matcher(t.getContent()); |
t.setContentsearch(p1.toString()); |
isFound = true; |
int s = m.start(); |
int e = m.end(); |
String c = m.group(); |
FindingDetailsType fd = FACTORY |
.createFindingDetailsType(); |
GroupMatchListType gm = FACTORY |
.createGroupMatchListType(); |
gm.setMatchAtIndex(s); |
gm.setMatchToIndex(e); |
gm.setMatchString(c); |
gm.setMatchGroup(0); |
fd.setFullmatch(gm); |
for (int i = 1; i <= m.groupCount(); i++) { |
GroupMatchListType gmg = FACTORY |
.createGroupMatchListType(); |
s = m.start(i); |
e = m.end(i); |
c = m.group(i); |
gmg.setMatchAtIndex(s); |
gmg.setMatchToIndex(e); |
gmg.setMatchString(c); |
gmg.setMatchGroup(i); |
fd.getMatchLists().add(gmg); |
} |
t.getFindingLists().add(fd); |
FindingsCacheServlet.logger |
.debug("Found matching content at index '" + s |
+ "' in file '" + t.getFullname() |
+ "' with pattern '" + p1.toString() |
+ "'"); |
} |
if (!isFound) { |
findingsList.getFindings().remove(t); |
FindingsCacheServlet.logger |
.debug("Found matching filename for '" |
+ t.getFullname() |
+ "' but content didn't match. Removing."); |
} |
try { |
instance.getCacheInstance().put( |
"FINDINGS-" + t.getROOT(), findingsList); |
FindingsCacheServlet.logger |
.info("FINDINGS for CVSROOT '" + t.getROOT() |
+ "' have been updated in cache."); |
} catch (CacheException e) { |
FindingsCacheServlet.logger.error(e.getMessage(), e); |
} |
} |
try { |
int cacheinterval = configuration.getCacheinterval(); |
FindingsCacheServlet.logger.debug("Now sleeping for '" |
+ cacheinterval + "' minutes"); |
Thread.currentThread(); |
Thread.sleep(cacheinterval * 60000); |
FindingsCacheServlet.logger.debug("Waking up after '" |
+ cacheinterval + "' minutes of sleep"); |
} catch (InterruptedException e) { |
this.isInterrupted = true; |
FindingsCacheServlet.logger |
.warn("FindingsCacheServlet cache was interrupted. Shutting down."); |
} |
} |
} |
private FindingType copyDetails(FindingType finding, ItemType item) { |
finding.setDescription(item.getDescription()); |
finding.setFullname(item.getFullname()); |
finding.setName(item.getName()); |
finding.setPath(item.getPath()); |
finding.setRemotefullname(item.getRemotefullname()); |
finding.setRemotename(item.getRemotename()); |
finding.setRemotepath(item.getRemotepath()); |
finding.setROOT(item.getROOT()); |
return finding; |
} |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/cache/FindingsConfigBean.java |
---|
0,0 → 1,107 |
/* |
* Copyright 2013 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util.cache; |
import java.io.File; |
import java.util.List; |
import org.apache.commons.configuration.PropertiesConfiguration; |
import org.apache.log4j.Logger; |
/** |
* @author Brian Rosenberger, bru(at)brutex.de |
* |
*/ |
public class FindingsConfigBean { |
private final Logger logger; |
private final int instanceid; |
private File cvsconfig; |
private int cacheinterval = 15; |
private List<Object> filepatterns; |
private List<Object> contentpatterns; |
public FindingsConfigBean(int instanceid, Logger logger) { |
this.instanceid = instanceid; |
this.logger = logger; |
logger.debug("Initialise FindingsConfigBean instance '"+instanceid+"'"); |
} |
/** |
* @return the cache interval |
*/ |
public int getCacheinterval() { |
return cacheinterval; |
} |
/** |
* @param cacheinterval the cache interval to set |
*/ |
public void setCacheinterval(int cacheinterval) { |
this.cacheinterval = cacheinterval; |
} |
/** |
* @return the cvsconfig |
*/ |
public File getCvsconfig() { |
return cvsconfig; |
} |
/** |
* @param cvsconfig the cvsconfig to set |
*/ |
public void setCvsconfig(File cvsconfig) { |
this.cvsconfig = cvsconfig; |
} |
/** |
* @return the filepatterns |
*/ |
public List<Object> getFilepatterns() { |
return filepatterns; |
} |
/** |
* @param filepatterns the filepatterns to set |
*/ |
public void setFilepatterns(List<Object> filepatterns) { |
this.filepatterns = filepatterns; |
} |
/** |
* @return the contentpatterns |
*/ |
public List<Object> getContentpatterns() { |
return contentpatterns; |
} |
/** |
* @param contentpatterns the contentpatterns to set |
*/ |
public void setContentpatterns(List<Object> contentpatterns) { |
this.contentpatterns = contentpatterns; |
} |
/** |
* @param instanceid |
*/ |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/CVSRoot.java |
---|
0,0 → 1,67 |
package net.brutex.xservices.util; |
import java.io.BufferedReader; |
import java.io.File; |
import java.io.FileReader; |
import java.io.IOException; |
/** |
* A struct containing the various bits of information in a CVS root string, |
* allowing easy retrieval of individual items of information |
*/ |
public class CVSRoot { |
public String connectionType; |
public String user; |
public String host; |
public String repository; |
public CVSRoot(String root) throws IllegalArgumentException { |
if (!root.startsWith(":")) |
throw new IllegalArgumentException(); |
int oldColonPosition = 0; |
int colonPosition = root.indexOf(':', 1); |
if (colonPosition == -1) |
throw new IllegalArgumentException(); |
connectionType = root.substring(oldColonPosition + 1, colonPosition); |
oldColonPosition = colonPosition; |
colonPosition = root.indexOf('@', colonPosition + 1); |
if (colonPosition == -1) |
throw new IllegalArgumentException(); |
user = root.substring(oldColonPosition + 1, colonPosition); |
oldColonPosition = colonPosition; |
colonPosition = root.indexOf(':', colonPosition + 1); |
if (colonPosition == -1) |
throw new IllegalArgumentException(); |
host = root.substring(oldColonPosition + 1, colonPosition); |
repository = root.substring(colonPosition + 1); |
if (connectionType == null || user == null || host == null |
|| repository == null) |
throw new IllegalArgumentException(); |
} |
public String getCVSRoot(File directory) { |
String root = null; |
BufferedReader r = null; |
try { |
File rootFile = new File(directory, "CVS/Root"); |
if (rootFile.exists()) { |
r = new BufferedReader(new FileReader(rootFile)); |
root = r.readLine(); |
} |
} catch (IOException e) { |
// ignore |
} finally { |
try { |
if (r != null) |
r.close(); |
} catch (IOException e) { |
System.err.println("Warning: could not close CVS/Root file!"); |
} |
} |
if (root == null) { |
root = System.getProperty("cvs.root"); |
} |
return root; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/BasicCVSListener.java |
---|
0,0 → 1,104 |
package net.brutex.xservices.util; |
import java.io.PrintStream; |
import org.netbeans.lib.cvsclient.command.FileInfoContainer; |
import org.netbeans.lib.cvsclient.command.log.LogInformation; |
import org.netbeans.lib.cvsclient.event.BinaryMessageEvent; |
import org.netbeans.lib.cvsclient.event.CVSAdapter; |
import org.netbeans.lib.cvsclient.event.CVSListener; |
import org.netbeans.lib.cvsclient.event.FileAddedEvent; |
import org.netbeans.lib.cvsclient.event.FileInfoEvent; |
import org.netbeans.lib.cvsclient.event.FileRemovedEvent; |
import org.netbeans.lib.cvsclient.event.FileToRemoveEvent; |
import org.netbeans.lib.cvsclient.event.FileUpdatedEvent; |
import org.netbeans.lib.cvsclient.event.MessageEvent; |
import org.netbeans.lib.cvsclient.event.ModuleExpansionEvent; |
import org.netbeans.lib.cvsclient.event.TerminationEvent; |
public abstract class BasicCVSListener implements CVSListener |
{ |
/** |
* Stores a tagged line |
*/ |
private final StringBuffer taggedLine = new StringBuffer(); |
/** |
* Called when the server wants to send a message to be displayed to |
* the user. The message is only for information purposes and clients |
* can choose to ignore these messages if they wish. |
* @param e the event |
*/ |
public void messageSent(MessageEvent e) |
{ |
String line = e.getMessage(); |
PrintStream stream = e.isError() ? System.err |
: System.out; |
if (e.isTagged()) |
{ |
String message = e.parseTaggedMessage(taggedLine, line); |
// if we get back a non-null line, we have something |
// to output. Otherwise, there is more to come and we |
// should do nothing yet. |
if (message != null) |
{ |
//stream.println("Message: " + message); |
} |
} |
else |
{ |
//stream.println("Message: " + line); |
} |
} |
@Override |
public void commandTerminated(TerminationEvent arg0) { |
} |
@Override |
public void fileAdded(FileAddedEvent arg0) { |
} |
@Override |
public void fileInfoGenerated(FileInfoEvent arg0) { |
FileInfoContainer info = arg0.getInfoContainer(); |
LogInformation info2 = (LogInformation) info; |
System.out.println(info2.getRepositoryFilename()); |
System.out.println(info2.getDescription()); |
} |
@Override |
public void fileRemoved(FileRemovedEvent arg0) { |
// TODO Auto-generated method stub |
} |
@Override |
public void fileToRemove(FileToRemoveEvent arg0) { |
// TODO Auto-generated method stub |
} |
@Override |
public void fileUpdated(FileUpdatedEvent arg0) { |
// TODO Auto-generated method stub |
} |
@Override |
public void messageSent(BinaryMessageEvent arg0) { |
// TODO Auto-generated method stub |
} |
@Override |
public void moduleExpanded(ModuleExpansionEvent arg0) { |
// TODO Auto-generated method stub |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/CVSClient.java |
---|
0,0 → 1,94 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
import java.io.File; |
import org.apache.commons.configuration.Configuration; |
import org.apache.commons.configuration.ConfigurationException; |
import org.apache.commons.configuration.PropertiesConfiguration; |
import org.netbeans.lib.cvsclient.Client; |
import org.netbeans.lib.cvsclient.admin.StandardAdminHandler; |
import org.netbeans.lib.cvsclient.command.CommandAbortedException; |
import org.netbeans.lib.cvsclient.command.GlobalOptions; |
import org.netbeans.lib.cvsclient.connection.AuthenticationException; |
import org.netbeans.lib.cvsclient.connection.PServerConnection; |
public class CVSClient { |
private final File configfile; |
private final PServerConnection connection; |
private final CVSRoot root; |
private final GlobalOptions globalOptions; |
public final Client client; |
public CVSClient(File config) throws CommandAbortedException, AuthenticationException, ConfigurationException { |
if (config == null || !config.exists() || config.isDirectory()) |
throw new ConfigurationException("Config file not found"); |
this.configfile = config; |
Configuration configuration = new PropertiesConfiguration(configfile); |
String cvsroot = configuration.getString("CVSROOT"); |
String workdir = configuration.getString("WORKDIR"); |
String password = configuration.getString("PASSWORD"); |
this.root = new CVSRoot(cvsroot); |
this.globalOptions = new GlobalOptions(); |
globalOptions.setCVSRoot(cvsroot); |
this.connection = new PServerConnection(); |
connection.setUserName(root.user); |
if (password != null) { |
connection.setEncodedPassword(CvsPassword.encode(password)); |
} else { |
connection.setEncodedPassword(password); |
} |
connection.setHostName(root.host); |
connection.setRepository(root.repository); |
connection.open(); |
this.client = new Client(connection, new StandardAdminHandler()); |
client.setLocalPath(workdir); |
} |
/** |
* @return |
*/ |
public File getConfigFile() { |
return this.configfile; |
} |
public GlobalOptions getGlobalOptions() { |
return this.globalOptions; |
} |
/** |
* @return the connection |
*/ |
public PServerConnection getConnection() { |
return connection; |
} |
/** |
* @return the root |
*/ |
public CVSRoot getRoot() { |
return root; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/CvsPassword.java |
---|
0,0 → 1,125 |
/* |
* Copyright 2012 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
/* |
* Copyright 2010 Andrew Kroh |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
/** |
* A simple class for encoding and decoding passwords for CVS pserver protocol. |
* Can be used to recover forgotten passwords. |
* |
* <p> |
* Adapted from: http://blog.zmeeagain.com/2005/01/recover-cvs-pserver-passwords.html |
*/ |
public class CvsPassword |
{ |
private static final char[] LOOKUP_TABLE = |
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 120, 53, |
79, 0, 109, 72, 108, 70, 64, 76, 67, 116, 74, 68, 87, 111, 52, 75, |
119, 49, 34, 82, 81, 95, 65, 112, 86, 118, 110, 122, 105, 41, 57, |
83, 43, 46, 102, 40, 89, 38, 103, 45, 50, 42, 123, 91, 35, 125, 55, |
54, 66, 124, 126, 59, 47, 92, 71, 115, 78, 88, 107, 106, 56, 0, |
121, 117, 104, 101, 100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48, |
58, 113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85}; |
/** |
* Encodes a CVS password to be used in .cvspass file. Throws an exception |
* if clearText is null, if a character is found outside the 0 - 126 range, or |
* if within the range, one of the non-allowed characters. |
* |
* @param clearText |
* the password in clear to be encoded |
* |
* @return the encoded cvs password |
*/ |
public static String encode(String clearText) |
{ |
// First character of encoded version is A: |
char[] encoded = new char[clearText.length() + 1]; |
encoded[0] = 'A'; |
// Skip the first character: |
int counter = 1; |
for (char c : clearText.toCharArray()) |
{ |
if (c == '`' || c == '$' || c < 32) |
{ |
throw new IllegalArgumentException( |
"Illegal character was found in clear password."); |
} |
encoded[counter++] = LOOKUP_TABLE[c]; |
} |
return String.valueOf(encoded); |
} |
/** |
* Recovers an encoded via pserver protocol CVS password. |
* |
* @param encodedPassword |
* the encoded password to be decoded |
* |
* @return the decoded password or null if the input was |
* null or empty |
*/ |
public static String decode(String encodedPassword) |
{ |
String rtn = null; |
if (encodedPassword != null && encodedPassword.length() > 0) |
{ |
if (encodedPassword.startsWith("A")) |
{ |
rtn = encode(encodedPassword.substring(1)).substring(1); |
} |
else |
{ |
rtn = encode(encodedPassword).substring(1); |
} |
} |
return rtn; |
} |
public static void main(String[] sArgs) |
{ |
final String TEST_WORD = "i07w91"; |
String encoded = CvsPassword.encode(TEST_WORD); |
System.out.println("Encoded: <" + encoded + ">"); |
String decoded = CvsPassword.decode(encoded); |
System.out.println("Decoded: <" + decoded + ">"); |
System.out.println(decoded.equals(TEST_WORD) ? "Test Passed" : "Test Failed"); |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/XServicesDocumentation.java |
---|
0,0 → 1,73 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
/** |
* Holds static documentation. |
* |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class XServicesDocumentation { |
public static final String BRUTEX_COPYRIGHT = "" + |
"/*\n" + |
"* Copyright 2010 Brian Rosenberger (Brutex Network)\n" + |
"*\n" + |
"* Licensed under the Apache License, Version 2.0 (the \"License\")\n" + |
"* you may not use this file except in compliance with the License.\n" + |
"* You may obtain a copy of the License at\n" + |
"*\n" + |
"* http://www.apache.org/licenses/LICENSE-2.0\n" + |
"*\n" + |
"* Unless required by applicable law or agreed to in writing, software\n" + |
"* distributed under the License is distributed on an \"AS IS\" BASIS,\n" + |
"* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + |
"* See the License for the specific language governing permissions and\n" + |
"* limitations under the License.\n" + |
"*/"; |
public static final String SERVICE_OPERATION_DOWNLOADFILE = "Download a file from the maschine where the service is running in order " + |
"to process it with the client. The file is either downloaded as a MTOM attachment or " + |
"as inline base64 encoded block. Keep in mind that unless you are using MTOM, a lot of " + |
"java heap memory is used."; |
public static final String SERVICE_OPERATION_ENCODEFILE = "Encodes a file."; |
public static final String SERVICE_OPERATION_UPLOADFILE = "Send a file from client to web service server using either " + |
"MTOM attachment or base64 inline attachment."; |
public static final String SERVICE_OPERATION_COPY = "Copies a fileset locally on the server."; |
public static final String SERVICE_OPERATION_COPYFILE = "Copies a single file locally on the server"; |
public static final String SERVICE_OPERATION_LOADRESOURCE = "Load the content of a resource"; |
public static final String SERVICE_OPERATION_LOADRESOURCEFROMARCHIVE = "Load the content of a resource"; |
public static final String SERVICE_OPERATION_ECHOTOFILE = "Write or append a string to a file"; |
public static final String SERVICE_OPERATION_REPLACEINFILE = "Replaces every <pattern> with a string in an ascii file"; |
public static final String SERVICE_OPERATION_REPLACEINFILE2 = "Replaces every <pattern> with a string in an ascii file"; |
public static final String SERVICE_OPERATION_REPLACEINFILEREGEX = "Replaces every <regex pattern> with a string in an ascii file"; |
private XServicesDocumentation() {}; |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/RunTask.java |
---|
0,0 → 1,101 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
import java.io.ByteArrayOutputStream; |
import java.io.PrintStream; |
import java.util.HashMap; |
import java.util.Map; |
import net.brutex.xservices.types.ReturnCode; |
import net.brutex.xservices.types.ant.AntProperty; |
import org.apache.tools.ant.BuildException; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.Target; |
import org.apache.tools.ant.Task; |
import org.apache.tools.ant.listener.TimestampedLogger; |
import org.apache.tools.ant.taskdefs.Echo; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class RunTask { |
Project antproject; |
Target anttarget; |
Task anttask; |
ByteArrayOutputStream myout = new ByteArrayOutputStream(); |
ByteArrayOutputStream myerr = new ByteArrayOutputStream(); |
PrintStream out = new PrintStream(myout); |
PrintStream err = new PrintStream(myerr); |
TimestampedLogger log = null; |
public RunTask(Task anttask) { |
antproject = new Project(); |
antproject.init(); |
antproject.setBasedir(System.getProperty("java.io.tmpdir")); |
log = new TimestampedLogger(); |
log.setOutputPrintStream(out); |
log.setErrorPrintStream(err); |
log.setMessageOutputLevel(Echo.EchoLevel.WARN.getLevel()); |
antproject.addBuildListener(log); |
anttarget = new Target(); |
anttarget.setName("XBridgeNGDynamicTarget"); |
anttarget.setProject(antproject); |
antproject.addTarget(anttarget); |
this.anttask = anttask; |
prepareTask(); |
} |
private void prepareTask() |
throws BuildException { |
anttask.init(); |
anttask.setProject(antproject); |
anttask.setOwningTarget(anttarget); |
anttarget.addTask(anttask); |
antproject.addOrReplaceTarget(anttarget); |
} |
/** |
* @return ReturnCode type {@link ReturnCode} |
* @throws BuildException |
*/ |
public ReturnCode postTask() throws BuildException { |
int returnCode = 0; |
Map<String, String> origMap = new HashMap<String, String>(); |
Map<String, String> newMap = null; |
origMap.putAll(antproject.getProperties()); |
antproject.executeTarget(anttarget.getName()); |
newMap = antproject.getProperties(); |
newMap.putAll(antproject.getUserProperties()); |
for (Map.Entry<String, String> e : origMap.entrySet()) { |
newMap.remove(e.getKey()); |
} |
//anttask.execute(); |
return new ReturnCode(returnCode, |
myout.toString(), |
myerr.toString(), |
AntProperty.createAntPropertyList(newMap)); |
} |
} |
/xservices/trunk/src/java/net/brutex/xservices/util/BrutexHSQLQuartzConnectionProvider.java |
---|
0,0 → 1,181 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
import java.io.BufferedReader; |
import java.io.File; |
import java.io.FileNotFoundException; |
import java.io.FileReader; |
import java.io.IOException; |
import java.sql.Connection; |
import java.sql.DatabaseMetaData; |
import java.sql.DriverManager; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import java.sql.Statement; |
import java.util.ArrayList; |
import java.util.List; |
import org.apache.log4j.Level; |
import org.apache.log4j.Logger; |
import org.quartz.utils.ConnectionProvider; |
/** |
* @author Brian Rosenberger |
* |
*/ |
public class BrutexHSQLQuartzConnectionProvider implements ConnectionProvider { |
private Connection conn = null; |
private final Logger logger = Logger.getLogger(this.getClass().getCanonicalName()); |
public Connection getConnection() throws SQLException { |
if( conn!= null && conn.isValid(5)) { |
logger.debug("Checking tables on pre-exisiting database connection."); |
checkTables(); |
return conn; |
} |
try { |
// Class.forName("org.hsqldb.jdbc.JDBCDriver" ); |
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); |
} catch (Exception e) { |
logger.fatal("Failed to load Derby JDBC driver."); |
e.printStackTrace(); |
return null; |
} |
if(isConnected(false)) { |
checkTables(); |
} else { |
return null; |
} |
return conn; |
} |
public void shutdown() throws SQLException { |
try { |
// Class.forName("org.hsqldb.jdbc.JDBCDriver" ); |
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); |
} catch (Exception e) { |
System.err.println("ERROR: failed to load Derby JDBC driver."); |
e.printStackTrace(); |
return; |
} |
String t = this.getClass().getClassLoader().getResource("/").toString() |
.substring(6); |
t += "../data/db"; |
System.out.println("Shut down embedded database now."); |
Connection c = DriverManager.getConnection("jdbc:derby:" + t |
+ ";shutdown=true;"); |
} |
private synchronized void recursiveDelete(File dbDir) { |
File[] files = dbDir.listFiles(); |
for (int i = 0; i < files.length; i++) { |
if (files[i].isFile()) { |
files[i].delete(); |
} else { |
recursiveDelete(files[i]); |
files[i].delete(); |
} |
} |
dbDir.delete(); |
} |
private synchronized void checkTables() throws SQLException { |
logger.debug("Checking QUARTZ database schema."); |
if(!isConnected(false)) { |
logger.error("Failed to validate QUARTZ database schema."); |
return; |
} |
List<String> ddl_list = new ArrayList<String>(11); |
ddl_list.add("QRTZ_JOB_DETAILS"); |
ddl_list.add("QRTZ_TRIGGERS"); |
ddl_list.add("QRTZ_SIMPLE_TRIGGERS"); |
ddl_list.add("QRTZ_CRON_TRIGGERS"); |
ddl_list.add("QRTZ_SIMPROP_TRIGGERS"); |
ddl_list.add("QRTZ_BLOB_TRIGGERS"); |
ddl_list.add("QRTZ_CALENDARS"); |
ddl_list.add("QRTZ_PAUSED_TRIGGER_GRPS"); |
ddl_list.add("QRTZ_FIRED_TRIGGERS"); |
ddl_list.add("QRTZ_SCHEDULER_STATE"); |
ddl_list.add("QRTZ_LOCKS"); |
String ddl = this.getClass().getClassLoader().getResource("/").toString() |
.substring(6)+ "../data/"; |
DatabaseMetaData dmd = conn.getMetaData(); |
for (String tbl : ddl_list) { |
ResultSet rs = dmd.getTables(null, "APP", tbl, null); |
if (!rs.next()) { |
logger.log(Level.INFO, "Adding DDL for table "+ tbl); |
Statement st = conn.createStatement(); |
File ddlFile = new File(ddl + tbl + ".ddl"); |
String create = ""; |
try { |
BufferedReader r = new BufferedReader(new FileReader(ddlFile)); |
while (r.ready()) { |
create += r.readLine() + "\n"; |
} |
create.trim(); |
if( st.execute(create)) { |
logger.log(Level.INFO, "Table " + tbl + " created."); |
} |
} catch (FileNotFoundException ex) { |
ex.printStackTrace(); |
} catch (IOException ex) { |
ex.printStackTrace(); |
} catch (SQLException ex) { |
logger.log(Level.ERROR, "Error executing statement "+ create ); |
System.out.println(ex.getMessage()); |
} |
} else { |
logger.trace("Table "+tbl+" exists."); |
} |
} |
} |
private synchronized boolean isConnected(boolean fail) throws SQLException { |
if(conn!=null && conn.isValid(5)) { |
return true; |
} else { |
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes |
t += "../data/db"; |
logger.debug("Database directory is set to '" + t + "'"); |
try { |
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;"); |
} catch (SQLException ex) { |
logger.error(ex.getMessage(), ex); |
if(!fail) { |
logger.warn("Deleting database directory."); |
recursiveDelete(new File(t)); |
logger.warn("Retrying to connect to database."); |
return isConnected(true); |
} else { |
return false; |
} |
} |
} |
return false; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/BrutexQuartzConnectionProvider.java |
---|
0,0 → 1,181 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
import java.io.BufferedReader; |
import java.io.File; |
import java.io.FileNotFoundException; |
import java.io.FileReader; |
import java.io.IOException; |
import java.sql.Connection; |
import java.sql.DatabaseMetaData; |
import java.sql.DriverManager; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import java.sql.Statement; |
import java.util.ArrayList; |
import java.util.List; |
import org.apache.log4j.Level; |
import org.apache.log4j.Logger; |
import org.quartz.utils.ConnectionProvider; |
/** |
* @author Brian Rosenberger |
* |
*/ |
public class BrutexQuartzConnectionProvider implements ConnectionProvider { |
private Connection conn = null; |
private final Logger logger = Logger.getLogger(this.getClass().getCanonicalName()); |
public Connection getConnection() throws SQLException { |
if( conn!= null && conn.isValid(5)) { |
logger.debug("Checking tables on pre-exisiting database connection."); |
checkTables(); |
return conn; |
} |
try { |
// Class.forName("org.hsqldb.jdbc.JDBCDriver" ); |
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); |
} catch (Exception e) { |
logger.fatal("Failed to load Derby JDBC driver."); |
e.printStackTrace(); |
return null; |
} |
if(isConnected(false)) { |
checkTables(); |
} else { |
return null; |
} |
return conn; |
} |
public void shutdown() throws SQLException { |
try { |
// Class.forName("org.hsqldb.jdbc.JDBCDriver" ); |
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); |
} catch (Exception e) { |
System.err.println("ERROR: failed to load Derby JDBC driver."); |
e.printStackTrace(); |
return; |
} |
String t = this.getClass().getClassLoader().getResource("/").toString() |
.substring(6); |
t += "../data/db"; |
System.out.println("Shut down embedded database now."); |
Connection c = DriverManager.getConnection("jdbc:derby:" + t |
+ ";shutdown=true;"); |
} |
private synchronized void recursiveDelete(File dbDir) { |
File[] files = dbDir.listFiles(); |
for (int i = 0; i < files.length; i++) { |
if (files[i].isFile()) { |
files[i].delete(); |
} else { |
recursiveDelete(files[i]); |
files[i].delete(); |
} |
} |
dbDir.delete(); |
} |
private synchronized void checkTables() throws SQLException { |
logger.debug("Checking QUARTZ database schema."); |
if(!isConnected(false)) { |
logger.error("Failed to validate QUARTZ database schema."); |
return; |
} |
List<String> ddl_list = new ArrayList<String>(11); |
ddl_list.add("QRTZ_JOB_DETAILS"); |
ddl_list.add("QRTZ_TRIGGERS"); |
ddl_list.add("QRTZ_SIMPLE_TRIGGERS"); |
ddl_list.add("QRTZ_CRON_TRIGGERS"); |
ddl_list.add("QRTZ_SIMPROP_TRIGGERS"); |
ddl_list.add("QRTZ_BLOB_TRIGGERS"); |
ddl_list.add("QRTZ_CALENDARS"); |
ddl_list.add("QRTZ_PAUSED_TRIGGER_GRPS"); |
ddl_list.add("QRTZ_FIRED_TRIGGERS"); |
ddl_list.add("QRTZ_SCHEDULER_STATE"); |
ddl_list.add("QRTZ_LOCKS"); |
String ddl = this.getClass().getClassLoader().getResource("/").toString() |
.substring(6)+ "../data/"; |
DatabaseMetaData dmd = conn.getMetaData(); |
for (String tbl : ddl_list) { |
ResultSet rs = dmd.getTables(null, "APP", tbl, null); |
if (!rs.next()) { |
logger.log(Level.INFO, "Adding DDL for table "+ tbl); |
Statement st = conn.createStatement(); |
File ddlFile = new File(ddl + tbl + ".ddl"); |
String create = ""; |
try { |
BufferedReader r = new BufferedReader(new FileReader(ddlFile)); |
while (r.ready()) { |
create += r.readLine() + "\n"; |
} |
create.trim(); |
if( st.execute(create)) { |
logger.log(Level.INFO, "Table " + tbl + " created."); |
} |
} catch (FileNotFoundException ex) { |
ex.printStackTrace(); |
} catch (IOException ex) { |
ex.printStackTrace(); |
} catch (SQLException ex) { |
logger.log(Level.ERROR, "Error executing statement "+ create ); |
System.out.println(ex.getMessage()); |
} |
} else { |
logger.trace("Table "+tbl+" exists."); |
} |
} |
} |
private synchronized boolean isConnected(boolean fail) throws SQLException { |
if(conn!=null && conn.isValid(5)) { |
return true; |
} else { |
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes |
t += "../data/db"; |
logger.debug("Database directory is set to '" + t + "'"); |
try { |
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;"); |
} catch (SQLException ex) { |
logger.error(ex.getMessage(), ex); |
if(!fail) { |
logger.warn("Deleting database directory."); |
recursiveDelete(new File(t)); |
logger.warn("Retrying to connect to database."); |
return isConnected(true); |
} else { |
return false; |
} |
} |
} |
return false; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/JobWrapper.java |
---|
0,0 → 1,96 |
/* |
* 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
import java.io.Serializable; |
import java.util.Date; |
import org.mozilla.javascript.Context; |
import org.mozilla.javascript.Scriptable; |
import org.quartz.Job; |
import org.quartz.JobDataMap; |
import org.quartz.JobExecutionContext; |
import org.quartz.JobExecutionException; |
/** |
* Wrapper for jobs that can be executed through quartz scheduler. |
* |
* @author Brian Rosenberger, bru@brutex.de |
* @since 0.5.0 |
* |
*/ |
public class JobWrapper implements Job, Serializable { |
public void execute(JobExecutionContext jcontext) |
throws JobExecutionException { |
try { |
System.out.println("Executing scheduled job '"+jcontext.getJobDetail().getKey().getName()+"' at " + new Date()); |
JobDataMap jdMap = jcontext.getJobDetail().getJobDataMap(); |
String script = jdMap.getString("script"); |
// Create and enter a Context. A Context stores information about |
// the execution environment of a script. |
Context cx = Context.enter(); |
cx.setOptimizationLevel(0); |
cx.setLanguageVersion(Context.VERSION_1_7); |
// cx is the Context instance you're using to run scripts |
/* |
* cx.setClassShutter(new ClassShutter() { public boolean |
* visibleToScripts(String className) { |
* if(className.startsWith("adapter")) return true; |
* if(className.startsWith("java.lang.System") || |
* className.startsWith |
* ("org.apache.tomcat.util.log.SystemLogHandler")) return true; |
* System.out.println(className + " is blocked."); return false; } |
* }); |
*/ |
// Initialise the standard objects (Object, Function, etc.). This |
// must be done before scripts can be |
// executed. The null parameter tells initStandardObjects |
// to create and return a scope object that we use |
// in later calls. |
Scriptable scope = cx.initStandardObjects(); |
//Object wrappedOut = Context.javaToJS(System.out, scope); |
//Object wrappedOut2 = Context.javaToJS(this, scope); |
//scope.put("out", scope, wrappedOut); |
//scope.put("exe", scope, wrappedOut2); |
// Execute the script |
// cx.evaluateString(scope, "importClass('java.lang.System');\n", |
// "head", 1, null); |
// cx.evaluateString(scope, "importPackage('java.util');\n", "head", |
// 2, null); |
Object obj = cx |
.evaluateString(scope, script, "TestScript", 1, null); |
} catch (Exception e) { |
System.out.println(e.getMessage()); |
} finally { |
// Exit the Context. This removes the association between the |
// Context and the current thread and is an |
// essential cleanup action. There should be a call to exit for |
// every call to enter. |
Context.exit(); |
} |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/xservices/trunk/src/java/net/brutex/xservices/util/BrutexNamespaces.java |
---|
0,0 → 1,54 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
/** |
* Holds static namespace information. |
* |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class BrutexNamespaces { |
/** |
* Brutex Network XServices web service name space declaration |
*/ |
public static final String WS_XSERVICES = "http://ws.xservices.brutex.net"; |
/** |
* Copyright and license agreement statement. |
*/ |
public static final String BRUTEX_COPYRIGHT = "" + |
"/*\n" + |
"* Copyright 2010 Brian Rosenberger (Brutex Network)\n" + |
"*\n" + |
"* Licensed under the Apache License, Version 2.0 (the \"License\")\n" + |
"* you may not use this file except in compliance with the License.\n" + |
"* You may obtain a copy of the License at\n" + |
"*\n" + |
"* http://www.apache.org/licenses/LICENSE-2.0\n" + |
"*\n" + |
"* Unless required by applicable law or agreed to in writing, software\n" + |
"* distributed under the License is distributed on an \"AS IS\" BASIS,\n" + |
"* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + |
"* See the License for the specific language governing permissions and\n" + |
"* limitations under the License.\n" + |
"*/"; |
private BrutexNamespaces() {}; |
} |
/xservices/trunk/src/java/net/brutex/xservices/util/UnRarTask.java |
---|
0,0 → 1,74 |
/* |
* Copyright 2010 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. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.util; |
import de.innosystec.unrar.Archive; |
import de.innosystec.unrar.exception.RarException; |
import de.innosystec.unrar.rarfile.FileHeader; |
import java.io.File; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.util.List; |
import org.apache.tools.ant.BuildException; |
import org.apache.tools.ant.Task; |
/** |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
public class UnRarTask extends Task { |
private File dst = null; |
private File src = null; |
public File getDst() { |
return dst; |
} |
public void setDst(File dst) { |
this.dst = dst; |
} |
public File getSrc() { |
return src; |
} |
public void setSrc(File src) { |
this.src = src; |
} |
@Override |
public void execute() { |
if(src==null ) throw new BuildException("Please supply a source archive file."); |
if(!src.exists()) throw new BuildException("Archive '"+src.getName()+"' does not exist."); |
try { |
if(dst==null) dst = new File(src.getParent()); |
Archive ar = new Archive(src); |
List<FileHeader> list = ar.getFileHeaders(); |
for(FileHeader h : list) { |
ar.extractFile(h, new FileOutputStream(new File(dst.getAbsolutePath()+"/"+h.getFileNameString()))); |
} |
} catch (RarException ex) { |
throw new BuildException(ex.getMessage(), ex); |
} catch (IOException ex) { |
throw new BuildException(ex.getMessage(), ex); |
} |
} |
} |