Subversion Repositories XServices

Compare Revisions

Ignore whitespace Rev 184 → Rev 185

/xservices/trunk/src/java/net/brutex/xservices/security/DirectoryPermission.java
16,7 → 16,9
 
package net.brutex.xservices.security;
 
import org.apache.log4j.Logger;
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.shiro.authz.Permission;
import org.apache.shiro.util.AntPathMatcher;
 
26,7 → 28,8
*/
public class DirectoryPermission implements Permission {
 
private final Logger logger = Logger.getLogger(DirectoryPermission.class);
private final Logger logger = LogManager.getLogger();
 
private final String path;
 
public DirectoryPermission(String antlikepath) {
/xservices/trunk/src/java/net/brutex/xservices/security/PermissionResolver.java
19,7 → 19,8
import net.brutex.xservices.ws.XmlService;
import net.brutex.xservices.ws.rs.FileInfo;
 
import org.apache.log4j.Logger;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.shiro.authz.Permission;
import org.apache.shiro.authz.permission.InvalidPermissionStringException;
 
29,7 → 30,7
*/
public class PermissionResolver implements org.apache.shiro.authz.permission.PermissionResolver {
final Logger logger = Logger.getLogger(PermissionResolver.class);
private final Logger logger = LogManager.getLogger();
private final String DELIMITER = "||";
 
@Override
/xservices/trunk/src/java/net/brutex/xservices/security/XServicesRealm.java
17,24 → 17,30
 
package net.brutex.xservices.security;
 
import java.text.ParseException;
import java.util.Collection;
import java.util.Map;
import org.apache.logging.log4j.Logger;
 
import org.apache.log4j.Logger;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
 
import javax.servlet.ServletContext;
 
import org.apache.catalina.core.ApplicationContext;
import org.apache.logging.log4j.LogManager;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.Permission;
import org.apache.shiro.authz.permission.PermissionResolver;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.config.Ini;
import org.apache.shiro.io.ResourceUtils;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.realm.text.TextConfigurationRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.util.Nameable;
import org.apache.shiro.util.PermissionUtils;
import org.apache.shiro.web.env.IniWebEnvironment;
import org.apache.shiro.web.util.WebUtils;
 
// TODO: Auto-generated Javadoc
/*
51,7 → 57,7
public class XServicesRealm extends IniRealm implements Nameable {
 
/** The logger. */
private static Logger logger = Logger.getLogger(XServicesRealm.class);
private final Logger logger = LogManager.getLogger();
/** The name. */
private String name;
70,11 → 76,25
* 'shiro.ini' in classpath and {@link net.brutex.xservices.security.PermissionResolver PermissionResolver}.
*
*/
public XServicesRealm() {
super();
this.setIni(Ini.fromResourcePath(ResourceUtils.CLASSPATH_PREFIX+"shiro.ini"));
/* needs review */
URI classesRootDir;
try {
classesRootDir = getClass().getProtectionDomain().getCodeSource().getLocation().toURI();
String dir = classesRootDir.toString().replaceAll("%20", " ");
dir = dir.substring(0, dir.lastIndexOf("WEB-INF"));
this.setIni(Ini.fromResourcePath(dir+"/WEB-INF/shiro.ini"));
} catch (URISyntaxException e) {
logger.error(e.getMessage(), e);
e.printStackTrace();
}
this.setPermissionResolver(new net.brutex.xservices.security.PermissionResolver());
//this.setRolePermissionResolver(new RolePermissionResolver());
init();
}
}
 
 
}
/xservices/trunk/src/java/net/brutex/xservices/security/XmlServicePermission.java
16,9 → 16,9
 
package net.brutex.xservices.security;
 
import org.apache.log4j.Logger;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.shiro.authz.Permission;
import org.apache.shiro.util.AntPathMatcher;
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
26,7 → 26,7
*/
public class XmlServicePermission implements Permission {
 
private final Logger logger = Logger.getLogger(XmlServicePermission.class);
private final Logger logger = LogManager.getLogger();
private final String permissionString;
 
public XmlServicePermission(String permissionString) {
/xservices/trunk/src/java/net/brutex/xservices/util/BrutexHSQLQuartzConnectionProvider.java
30,9 → 30,9
import java.util.ArrayList;
import java.util.List;
 
 
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.quartz.utils.ConnectionProvider;
 
/**
42,7 → 42,7
public class BrutexHSQLQuartzConnectionProvider implements ConnectionProvider {
private Connection conn = null;
private final Logger logger = Logger.getLogger(this.getClass().getCanonicalName());
private static final Logger logger = LogManager.getLogger();
 
public Connection getConnection() throws SQLException {
/xservices/trunk/src/java/net/brutex/xservices/util/BrutexQuartzConnectionProvider.java
30,9 → 30,9
import java.util.ArrayList;
import java.util.List;
 
 
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.quartz.utils.ConnectionProvider;
 
/**
42,7 → 42,7
public class BrutexQuartzConnectionProvider implements ConnectionProvider {
private Connection conn = null;
private final Logger logger = Logger.getLogger(this.getClass().getCanonicalName());
private final Logger logger = LogManager.getLogger();
 
public Connection getConnection() throws SQLException {
/xservices/trunk/src/java/net/brutex/xservices/util/CVSClient.java
2,11 → 2,13
/* */
/* */ import java.io.File;
/* */ import net.brutex.xservices.types.scm.ItemType;
/* */ import net.brutex.xservices.ws.rs.CVSInfoImpl;
/* */ import org.apache.commons.configuration.Configuration;
/* */ import org.apache.commons.configuration.ConfigurationException;
/* */ import org.apache.commons.configuration.PropertiesConfiguration;
/* */ import org.apache.log4j.Logger;
import net.brutex.xservices.util.CVSRoot;
 
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/* */ import org.netbeans.lib.cvsclient.Client;
/* */ import org.netbeans.lib.cvsclient.admin.StandardAdminHandler;
/* */ import org.netbeans.lib.cvsclient.command.CommandAbortedException;
20,7 → 22,7
/* */ private final PServerConnection connection;
/* */ private final CVSRoot root;
/* */ private final GlobalOptions globalOptions;
/* 41 */ final Logger logger = Logger.getLogger(CVSInfoImpl.class);
/* 41 */ final Logger logger = LogManager.getLogger();
/* */ public final Client client;
/* */
/* */ public Client getClient()
34,7 → 36,9
/* 55 */ throw new ConfigurationException("Config file not found");
/* */ }
/* 57 */ this.configfile = config;
/* 58 */ Configuration configuration = new PropertiesConfiguration(this.configfile);
Configurations configs = new Configurations();
/* 58 */ PropertiesConfiguration configuration = configs.properties(this.configfile);
/* */
/* 60 */ String cvsroot = configuration.getString("CVSROOT");
/* 61 */ String workdir = configuration.getString("WORKDIR");
/xservices/trunk/src/java/net/brutex/xservices/util/FileWalker.java
25,8 → 25,10
import java.util.ArrayList;
import java.util.List;
 
import org.apache.log4j.Logger;
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import net.brutex.xservices.types.FileInfoType;
 
// TODO: Auto-generated Javadoc
50,7 → 52,7
private final String pattern;
/** The logger. */
final Logger logger = Logger.getLogger(FileWalker.class);
private static final Logger logger = LogManager.getLogger();
 
List<Path> list;
/xservices/trunk/src/java/net/brutex/xservices/util/cache/CacheExecutorService.java
28,33 → 28,28
*
*/
 
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 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();
}
public void contextDestroyed(ServletContextEvent arg0) {
ServletContext context = arg0.getServletContext();
this.executor.shutdownNow();
}
}
/xservices/trunk/src/java/net/brutex/xservices/util/cache/CacheServlet.java
21,11 → 21,11
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;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
35,8 → 35,8
 
public class CacheServlet extends HttpServlet
{
private final Logger logger = Logger.getLogger(CacheServlet.class);
List<File> configfiles = new ArrayList();
private static final Logger logger = LogManager.getLogger();
List<File> configfiles = new ArrayList<File>();
int cacheinterval;
private final ObjectFactory FACTORY = new ObjectFactory();
 
/xservices/trunk/src/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java
38,12 → 38,14
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;
 
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
*
52,8 → 54,7
public class FindingsCacheServlet extends HttpServlet {
 
private static final long serialVersionUID = 4041338473949999960L;
private final static Logger logger = Logger
.getLogger(FindingsCacheServlet.class);
private static final Logger logger = LogManager.getLogger();
private final List<File> configfiles = new ArrayList<File>();
private final ObjectFactory FACTORY = new ObjectFactory();
private ExecutorService executor;
70,7 → 71,7
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()));
FindingsConfigBean cbean = new FindingsConfigBean(i, LogManager.getLogger("worker-"+i+ "." + this.getClass().getName()));
i++;
86,9 → 87,10
+ cbean.getCacheinterval()+ "' minutes");
}
Configurations configs = new Configurations();
PropertiesConfiguration config = null;
try {
config = new PropertiesConfiguration(f);
config = configs.properties(f);
} catch (ConfigurationException e) {
logger.error("Could not read parameter file at '"+f.getAbsolutePath()+"'");
return;
/xservices/trunk/src/java/net/brutex/xservices/util/cache/FindingsConfigBean.java
19,8 → 19,7
import java.io.File;
import java.util.List;
 
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.Logger;
 
/**
* @author Brian Rosenberger, bru(at)brutex.de
27,11 → 26,10
*
*/
public class FindingsConfigBean {
private final Logger logger;
 
private Logger logger;
private final int instanceid;
 
private File cvsconfig;
private int cacheinterval = 15;
private List<Object> filepatterns;
40,8 → 38,8
public FindingsConfigBean(int instanceid, Logger logger) {
this.instanceid = instanceid;
this.logger = logger;
logger.debug("Initialise FindingsConfigBean instance '"+instanceid+"'");
logger.debug("Initialise FindingsConfigBean instance '" + instanceid + "'");
 
}
 
/**
52,12 → 50,13
}
 
/**
* @param cacheinterval the cache interval to set
* @param cacheinterval
* the cache interval to set
*/
public void setCacheinterval(int cacheinterval) {
this.cacheinterval = cacheinterval;
}
 
/**
* @return the cvsconfig
*/
66,7 → 65,8
}
 
/**
* @param cvsconfig the cvsconfig to set
* @param cvsconfig
* the cvsconfig to set
*/
public void setCvsconfig(File cvsconfig) {
this.cvsconfig = cvsconfig;
80,7 → 80,8
}
 
/**
* @param filepatterns the filepatterns to set
* @param filepatterns
* the filepatterns to set
*/
public void setFilepatterns(List<Object> filepatterns) {
this.filepatterns = filepatterns;
94,7 → 95,8
}
 
/**
* @param contentpatterns the contentpatterns to set
* @param contentpatterns
* the contentpatterns to set
*/
public void setContentpatterns(List<Object> contentpatterns) {
this.contentpatterns = contentpatterns;
103,5 → 105,5
/**
* @param instanceid
*/
 
}
/xservices/trunk/src/java/net/brutex/xservices/ws/impl/XmlServiceImpl.java
26,17 → 26,12
import java.nio.charset.IllegalCharsetNameException;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
 
import javax.jws.WebService;
import javax.ws.rs.NotAuthorizedException;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
 
import net.brutex.xservices.security.DirectoryPermission;
import net.brutex.xservices.types.AttributeType;
import net.brutex.xservices.types.NamespaceListType;
import net.brutex.xservices.types.NamespaceType;
58,9 → 53,9
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.xpath.AXIOMXPath;
import org.apache.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.UnauthorizedException;
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jaxen.JaxenException;
import org.jaxen.SimpleNamespaceContext;
71,18 → 66,17
*/
@WebService(targetNamespace = "http://ws.xservices.brutex.net", endpointInterface = "net.brutex.xservices.ws.XmlService", serviceName = "XmlService")
public class XmlServiceImpl implements XmlService {
final Logger logger = Logger.getLogger(XmlServiceImpl.class);
private static final Logger logger = LogManager.getLogger();
 
public String insertNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
public String insertNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment)
throws XServicesFault {
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = res.getAntResource(null).getInputStream();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is)
.getDocument();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
114,57 → 108,56
}
}
 
public String replaceNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
public String replaceNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment)
throws XServicesFault {
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = res.getAntResource(null).getInputStream();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
}
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = res.getAntResource(null).getInputStream();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
}
 
// Initialize XPath context
SimpleNamespaceContext context = createContext(nsList);
axp.setNamespaceContext(context);
axp.addNamespaces(fragdoc.getOMDocumentElement());
// Initialize XPath context
SimpleNamespaceContext context = createContext(nsList);
axp.setNamespaceContext(context);
axp.addNamespaces(fragdoc.getOMDocumentElement());
 
OMDocument document = replaceNodes(sourcedoc, axp, fragdoc);
OMDocument document = replaceNodes(sourcedoc, axp, fragdoc);
 
StringWriter sw = new StringWriter();
XMLOutputFactory xof = XMLOutputFactory.newInstance();
XMLStreamWriter writer = xof.createXMLStreamWriter(sw);
document.serialize(writer);
StringWriter sw = new StringWriter();
XMLOutputFactory xof = XMLOutputFactory.newInstance();
XMLStreamWriter writer = xof.createXMLStreamWriter(sw);
document.serialize(writer);
 
this.logger.trace(sw.getBuffer().toString());
return sw.getBuffer().toString();
} catch (JaxenException e) {
e.printStackTrace();
throw new XServicesFault(e);
} catch (XMLStreamException e) {
e.printStackTrace();
throw new XServicesFault(e);
} catch (IOException e) {
e.printStackTrace();
throw new XServicesFault(e);
}
this.logger.trace(sw.getBuffer().toString());
return sw.getBuffer().toString();
} catch (JaxenException e) {
e.printStackTrace();
throw new XServicesFault(e);
} catch (XMLStreamException e) {
e.printStackTrace();
throw new XServicesFault(e);
} catch (IOException e) {
e.printStackTrace();
throw new XServicesFault(e);
}
}
 
public String replaceNodes(String source, String encoding, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
public String replaceNodes(String source, String encoding, NamespaceListType nsList, String xpath,
String xmlFragment) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = new ByteArrayInputStream(source.getBytes(encoding));
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is)
.getDocument();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
194,19 → 187,18
throw new XServicesFault(e);
}
}
 
@RequiresPermissions("insertNodes")
public String insertNodes(String source, String encoding, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
public String insertNodes(String source, String encoding, NamespaceListType nsList, String xpath,
String xmlFragment) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = new ByteArrayInputStream(source.getBytes(encoding));
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is)
.getDocument();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
238,19 → 230,21
}
 
public String wrapInCDATA(String data) throws XServicesFault {
String result ="";
String result = "";
String[] tokens = data.split("\\]\\]>", -1);
for(int i=0; i<tokens.length; i++) {
result += tokens[i];
if (i+1 < tokens.length ) result += "]]]]><![CDATA[>";
 
for (int i = 0; i < tokens.length; i++) {
result += tokens[i];
if (i + 1 < tokens.length)
result += "]]]]><![CDATA[>";
}
 
result = "<![CDATA[" + result + "]]>";
return result;
}
 
public StringSplitType selectXPath(String source, String encoding, NamespaceListType nsList, String xpath) throws XServicesFault {
public StringSplitType selectXPath(String source, String encoding, NamespaceListType nsList, String xpath)
throws XServicesFault {
encoding = validateEncoding(encoding);
try {
StringSplitType rarray = new StringSplitType();
257,56 → 251,56
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = new ByteArrayInputStream(source.getBytes(encoding));
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
 
// Initialize XPath context
SimpleNamespaceContext context = createContext(nsList);
 
axp.setNamespaceContext(context);
List results = axp.selectNodes(sourcedoc);
for(Object o : results) {
for (Object o : results) {
String text = null;
if(o instanceof OMNode) {
switch (((OMNode)o).getType()) {
case OMNode.TEXT_NODE:
text = ((OMText)o).getText();
break;
case OMNode.COMMENT_NODE:
text = ((OMComment)o).getValue();
break;
case OMNode.PI_NODE:
text = ((OMProcessingInstruction)o).getValue();
break;
default:
StringWriter sw = new StringWriter();
XMLOutputFactory xof = XMLOutputFactory.newInstance();
XMLStreamWriter writer = xof.createXMLStreamWriter(sw);
((OMNode)o).serialize(writer);
writer.flush();
text = sw.toString();
}
} else if(o instanceof OMAttribute) {
text = ((OMAttribute)o).getAttributeValue();
 
if (o instanceof OMNode) {
switch (((OMNode) o).getType()) {
case OMNode.TEXT_NODE:
text = ((OMText) o).getText();
break;
case OMNode.COMMENT_NODE:
text = ((OMComment) o).getValue();
break;
case OMNode.PI_NODE:
text = ((OMProcessingInstruction) o).getValue();
break;
default:
StringWriter sw = new StringWriter();
XMLOutputFactory xof = XMLOutputFactory.newInstance();
XMLStreamWriter writer = xof.createXMLStreamWriter(sw);
((OMNode) o).serialize(writer);
writer.flush();
text = sw.toString();
}
} else if (o instanceof OMAttribute) {
text = ((OMAttribute) o).getAttributeValue();
} else {
text = String.valueOf(o);
}
rarray.addStringMatch(text);
}
 
return rarray;
} catch (JaxenException e) {
} catch (JaxenException e) {
e.printStackTrace();
throw new XServicesFault(e);
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
// TODO Auto-generated catch block
throw new XServicesFault(e.getMessage());
} catch (UnsupportedEncodingException e) {
throw new XServicesFault(e);
} catch (UnsupportedEncodingException e) {
throw new XServicesFault(e);
}
}
public String setAttribute(String source, String encoding, NamespaceListType nsList, String xpath, AttributeType attr) throws XServicesFault {
 
public String setAttribute(String source, String encoding, NamespaceListType nsList, String xpath,
AttributeType attr) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
StringSplitType rarray = new StringSplitType();
314,64 → 308,62
InputStream is = new ByteArrayInputStream(source.getBytes(encoding));
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMFactory fac = OMAbstractFactory.getOMFactory();
 
// Initialize XPath context
SimpleNamespaceContext context = createContext(nsList);
 
axp.setNamespaceContext(context);
List results = axp.selectNodes(sourcedoc);
for(Object o : results) {
for (Object o : results) {
String text = null;
if(o instanceof OMNode) {
switch (((OMNode)o).getType()) {
case OMNode.ELEMENT_NODE:
OMElement node = ((OMElement)o);
if(attr.value == null) {
node.removeAttribute( node.getAttribute(new QName(attr.name)));
} else {
node.addAttribute(attr.name, attr.value, node.getNamespace());
}
break;
default:
throw new XServicesFault("XPath expression did not match an element node.");
 
if (o instanceof OMNode) {
switch (((OMNode) o).getType()) {
case OMNode.ELEMENT_NODE:
OMElement node = ((OMElement) o);
if (attr.value == null) {
node.removeAttribute(node.getAttribute(new QName(attr.name)));
} else {
node.addAttribute(attr.name, attr.value, node.getNamespace());
}
break;
default:
throw new XServicesFault("XPath expression did not match an element node.");
}
} else {
throw new XServicesFault("XPath expression did not match a node.");
}
}
 
StringWriter sw = new StringWriter();
XMLOutputFactory xof = XMLOutputFactory.newInstance();
XMLStreamWriter writer = xof.createXMLStreamWriter(sw);
sourcedoc.serialize(writer);
writer.flush();
return sw.toString();
} catch (JaxenException e) {
return sw.toString();
} catch (JaxenException e) {
e.printStackTrace();
throw new XServicesFault(e);
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
// TODO Auto-generated catch block
throw new XServicesFault(e.getMessage());
} catch (UnsupportedEncodingException e) {
throw new XServicesFault(e);
} catch (UnsupportedEncodingException e) {
throw new XServicesFault(e);
}
}
private OMDocument insertNodes(OMDocument xmldocument, AXIOMXPath axp,OMDocument xmlfragment) throws XServicesFault {
 
private OMDocument insertNodes(OMDocument xmldocument, AXIOMXPath axp, OMDocument xmlfragment)
throws XServicesFault {
List<?> olist = null;
try {
olist = axp.selectNodes(xmldocument.getOMDocumentElement());
this.logger.debug("XPath '" + axp.toString() + "' has "
+ olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug()
+ "'.");
this.logger.debug("XPath '" + axp.toString() + "' has " + olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug() + "'.");
} catch (JaxenException e) {
throw new XServicesFault(e.getMessage(), e);
}
if (olist.size() == 0)
throw new XServicesFault(Messages.getString("XmlService.no_match",
new Object[] { axp.toString() }));
throw new XServicesFault(Messages.getString("XmlService.no_match", new Object[] { axp.toString() }));
 
// Prepare children to insert
xmlfragment.build();
379,8 → 371,7
// Determine what has been matched
OMContainer match = null;
for (Object o : olist) {
Iterator<?> children = xmlfragment.getOMDocumentElement()
.getChildren();
Iterator<?> children = xmlfragment.getOMDocumentElement().getChildren();
if ((o instanceof OMNode)) {
OMNode node = (OMNode) o;
switch (node.getType()) {
401,16 → 392,13
this.logger.debug(Messages.getString("XmlService.10"));
break;
default:
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName() + " Node Type:"
+ node.getType());
this.logger
.error("XPath matched " + o.getClass().getCanonicalName() + " Node Type:" + node.getType());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(
Messages.getString("XmlService.12"));
throw new XServicesFault(Messages.getString("XmlService.12"));
}
} else {
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName());
this.logger.error("XPath matched " + o.getClass().getCanonicalName());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(Messages.getString("XmlService.12"));
}
425,22 → 413,19
return xmldocument;
}
 
private OMDocument replaceNodes(OMDocument xmldocument, AXIOMXPath axp, OMDocument xmlfragment)
throws XServicesFault {
 
private OMDocument replaceNodes(OMDocument xmldocument, AXIOMXPath axp, OMDocument xmlfragment) throws XServicesFault {
List<?> olist = null;
try {
olist = axp.selectNodes(xmldocument.getOMDocumentElement());
this.logger.debug("XPath '" + axp.toString() + "' has "
+ olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug()
+ "'.");
this.logger.debug("XPath '" + axp.toString() + "' has " + olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug() + "'.");
} catch (JaxenException e) {
throw new XServicesFault(e.getMessage(), e);
}
if (olist.size() == 0)
throw new XServicesFault(Messages.getString("XmlService.no_match",
new Object[] { axp.toString() }));
throw new XServicesFault(Messages.getString("XmlService.no_match", new Object[] { axp.toString() }));
 
// Prepare children to insert
xmlfragment.build();
448,8 → 433,7
// Determine what has been matched
OMNode match = null;
for (Object o : olist) {
Iterator<?> children = xmlfragment.getOMDocumentElement()
.getChildren();
Iterator<?> children = xmlfragment.getOMDocumentElement().getChildren();
if ((o instanceof OMNode)) {
OMNode node = (OMNode) o;
switch (node.getType()) {
461,16 → 445,13
this.logger.debug(Messages.getString("XmlService.8"));
break;
default:
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName() + " Node Type:"
+ node.getType());
this.logger
.error("XPath matched " + o.getClass().getCanonicalName() + " Node Type:" + node.getType());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(
Messages.getString("XmlService.12"));
throw new XServicesFault(Messages.getString("XmlService.12"));
}
} else {
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName());
this.logger.error("XPath matched " + o.getClass().getCanonicalName());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(Messages.getString("XmlService.12"));
}
488,12 → 469,11
private SimpleNamespaceContext createContext(NamespaceListType nsList) {
// Initialize XPath context
SimpleNamespaceContext context = new SimpleNamespaceContext();
if(nsList != null) {
if (nsList != null) {
for (NamespaceType ns : nsList.getNamespaces()) {
context.addNamespace(ns.getPrefix(), ns.getUri().toString());
this.logger.debug(Messages.getString("XmlService.0")
+ ns.getPrefix() + "=\"" + ns.getUri().toString()
+ "\"'");
this.logger.debug(
Messages.getString("XmlService.0") + ns.getPrefix() + "=\"" + ns.getUri().toString() + "\"'");
}
} else {
logger.debug("No namespaces defined.");
502,15 → 482,16
}
 
private String validateEncoding(String encoding) throws XServicesFault {
if(encoding == null || encoding.equals("")) { encoding=Charset.defaultCharset().displayName(); }
try {
if (encoding == null || encoding.equals("")) {
encoding = Charset.defaultCharset().displayName();
}
try {
Charset.isSupported(encoding);
} catch (IllegalCharsetNameException e) {
throw new XServicesFault("Endcoding '"+encoding+"' is not supported by this JRE.");
throw new XServicesFault("Endcoding '" + encoding + "' is not supported by this JRE.");
}
logger.debug("Setting source xml string encoding to '"+encoding+"'");
logger.debug("Setting source xml string encoding to '" + encoding + "'");
return encoding;
}
 
}
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/CVSInfoImpl.java
8,9 → 8,10
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;
23,10 → 24,13
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.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.command.CommandAbortedException;
import org.netbeans.lib.cvsclient.command.CommandException;
42,7 → 46,7
import org.netbeans.lib.cvsclient.event.FileInfoEvent;
 
public class CVSInfoImpl implements CVSInfo {
final Logger logger = Logger.getLogger(CVSInfoImpl.class);
private static final Logger logger = LogManager.getLogger();
final ObjectFactory FACTORY = new ObjectFactory();
final ItemListType list = this.FACTORY.createItemListType();
 
49,7 → 53,7
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);
CVSInfoImpl.logger.debug("forceNoCache=" + forceNoCache);
ItemListType cacheresult = (ItemListType) getCacheInstance().get(
cachekey);
 
117,7 → 121,7
try {
CVSInfoImpl.this.getCacheInstance().put(key, cvsfile);
} catch (CacheException e) {
CVSInfoImpl.this.logger.error("Could not cache item '"
CVSInfoImpl.logger.error("Could not cache item '"
+ key + "'", e);
}
}
138,7 → 142,7
 
rlog.setRecursive(isRecursive);
 
this.logger.info("Executing CVS command '" + rlog.getCVSCommand()
CVSInfoImpl.logger.info("Executing CVS command '" + rlog.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(rlog, cvsclient.getGlobalOptions());
145,7 → 149,7
 
getCacheInstance().put(cachekey, this.list);
} catch (ConfigurationException e) {
this.logger.error("CVS Configuration File '" + f.getAbsolutePath()
CVSInfoImpl.logger.error("CVS Configuration File '" + f.getAbsolutePath()
+ f.getName() + "'not found.", e);
} catch (CommandAbortedException e) {
e.printStackTrace();
168,7 → 172,7
 
public Response getModules(HttpHeaders h, File f, boolean forceNoCache) {
String cachekey = "Modules" + f.toURI().toString();
this.logger.debug("forceNoCache=" + forceNoCache);
CVSInfoImpl.logger.debug("forceNoCache=" + forceNoCache);
 
ModuleListType response = (ModuleListType) getCacheInstance().get(
cachekey);
196,12 → 200,12
CheckoutCommand co = new CheckoutCommand();
co.setShowModulesWithStatus(true);
 
this.logger.info("Executing CVS command '" + co.getCVSCommand()
CVSInfoImpl.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 '"
CVSInfoImpl.logger.warn("Repository '"
+ cvsclient.getRoot().repository
+ "' does not have modules");
}
216,14 → 220,14
 
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
CVSInfoImpl.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.");
CVSInfoImpl.logger.debug("Delivering Tags from cache.");
return Response.ok(tags).build();
}
this.logger.warn("Taglist not found in cache.");
CVSInfoImpl.logger.warn("Taglist not found in cache.");
return Response.noContent().build();
}
 
235,17 → 239,17
ItemListType list = null;
 
if (!forceNoCache) {
this.logger.debug("Retrieving file content from cache using key '"
CVSInfoImpl.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.");
CVSInfoImpl.logger.debug("Delivering file content from cache.");
return Response.ok(list).build();
}
 
this.logger.warn("File content not found in cache.");
CVSInfoImpl.logger.warn("File content not found in cache.");
list = this.FACTORY.createItemListType();
try {
CVSClient cvsclient = new CVSClient(f);
302,7 → 306,7
checkout.setModule(filestring);
checkout.setPipeToOutput(true);
 
this.logger.info("Execute CVS command '" + checkout.getCVSCommand()
CVSInfoImpl.logger.info("Execute CVS command '" + checkout.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(checkout, cvsclient.getGlobalOptions());
322,14 → 326,14
return Response.noContent().build();
}
 
public JCS getCacheInstance() {
JCS jcs = null;
public CacheAccess<Object, Object> getCacheInstance() {
CacheAccess<Object, Object> jcs = null;
String cacheinstance = "CVSCache";
try {
this.logger.trace("Getting cache instance named 'CVSCache'");
CVSInfoImpl.logger.trace("Getting cache instance named 'CVSCache'");
jcs = JCS.getInstance("CVSCache");
} catch (CacheException e) {
this.logger.error("Failed to get cache instance", e);
CVSInfoImpl.logger.error("Failed to get cache instance", e);
e.printStackTrace();
}
return jcs;
343,16 → 347,16
+ client.getRoot().repository;
 
String cachestring = "FINDINGS-" + cvsroot;
this.logger
CVSInfoImpl.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
CVSInfoImpl.logger.debug("Found object for key '" + cachestring
+ "' in cache.");
else {
this.logger.debug("Found no object for key '" + cachestring
CVSInfoImpl.logger.debug("Found no object for key '" + cachestring
+ "' in cache.");
}
 
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/DIMCMInfo.java
28,7 → 28,7
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
 
import org.apache.jcs.access.exception.CacheException;
import org.apache.commons.jcs.access.exception.CacheException;
 
import net.brutex.xservices.ws.XServicesFault;
 
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/DIMCMInfoImpl.java
33,16 → 33,20
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
 
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import net.brutex.xservices.cmtypes.ItemType;
import net.brutex.xservices.cmtypes.ItemTypeList;
import net.brutex.xservices.types.FileInfoType;
import net.brutex.xservices.util.FileWalker;
 
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;
 
 
/*
76,7 → 80,7
*/
public class DIMCMInfoImpl implements DIMCMInfo {
 
Logger logger = Logger.getLogger(DIMCMInfoImpl.class);
Logger logger = LogManager.getLogger();
 
/*
* (non-Javadoc)
93,7 → 97,7
/*
* try to hit cache first
*/
JCS cache = JCS.getInstance("DIMCM");
CacheAccess<Object, Object> cache = JCS.getInstance("DIMCM");
String cachekey = projSpec + directory + String.valueOf(recursive);
if(useCache) {
ItemTypeList cacheresult = (ItemTypeList) cache.get(cachekey);
328,7 → 332,8
*/
PropertiesConfiguration props;
try {
props = new PropertiesConfiguration(this.getClass()
props = new Configurations().properties(this.getClass()
.getClassLoader().getResource("/../dimcm.properties"));
} catch (ConfigurationException e) {
e.printStackTrace();
349,11 → 354,13
private String getBaseURL() {
final String CACHE_BASEURL = "DIMCM.conf.baseurl";
try {
JCS cache = JCS.getInstance("DIMCM");
CacheAccess<Object, Object> cache = JCS.getInstance("DIMCM");
String baseurl = (String) cache.get(CACHE_BASEURL);
if(baseurl != null) return baseurl;
PropertiesConfiguration props = new PropertiesConfiguration(this.getClass().getClassLoader().getResource("/../dimcm.properties"));
Configurations configs = new Configurations();
PropertiesConfiguration props = configs.properties((this.getClass().getClassLoader().getResource("/../dimcm.properties")));
baseurl = props.getString("baseurl");
cache.put(CACHE_BASEURL, baseurl);
return baseurl;
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/FileInfoImpl.java
51,9 → 51,11
import net.brutex.xservices.types.FileInfoType;
import net.brutex.xservices.util.FileWalker;
 
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
import org.apache.log4j.Logger;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.UnauthorizedException;
 
65,7 → 67,7
public class FileInfoImpl implements FileInfo {
Logger logger = Logger.getLogger(FileInfoImpl.class);
Logger logger = LogManager.getLogger();
 
/* (non-Javadoc)
88,7 → 90,7
String cachekey = level + "||" + withFiles + "||" + withDir + "||" + search + "||" + dir;
try {
logger.debug(String.format("Hitting cache with cachekey '%s'", cachekey));
JCS jcs = JCS.getInstance("FileCache");
CacheAccess<Object, Object> jcs = JCS.getInstance("FileCache");
 
/*Try to retrieve the file list from the cache*/
List<FileInfoType> list = (List<FileInfoType>)jcs.get(cachekey);