Subversion Repositories XServices

Compare Revisions

Ignore whitespace Rev 198 → Rev 199

/xservices/trunk/src/main/java/net/brutex/xservices/ws/rs/CVSInfoImpl.java
12,6 → 12,7
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
 
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.AttributeType;
import net.brutex.xservices.types.scm.ItemListType;
import net.brutex.xservices.types.scm.ItemType;
29,8 → 30,6
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;
45,8 → 44,9
import org.netbeans.lib.cvsclient.event.EventManager;
import org.netbeans.lib.cvsclient.event.FileInfoEvent;
 
@Slf4j
public class CVSInfoImpl implements CVSInfo {
private static final Logger logger = LogManager.getLogger();
 
final ObjectFactory FACTORY = new ObjectFactory();
final ItemListType list = this.FACTORY.createItemListType();
 
53,7 → 53,7
public Response getRepositoryFiles(HttpHeaders h, File f, String modules,
boolean isRecursive, boolean showRevisions, boolean forceNoCache) {
String cachekey = "getFiles" + f.toURI().toString();
CVSInfoImpl.logger.debug("forceNoCache=" + forceNoCache);
log.debug("forceNoCache=" + forceNoCache);
ItemListType cacheresult = (ItemListType) getCacheInstance().get(
cachekey);
 
121,7 → 121,7
try {
CVSInfoImpl.this.getCacheInstance().put(key, cvsfile);
} catch (CacheException e) {
CVSInfoImpl.logger.error("Could not cache item '"
log.error("Could not cache item '"
+ key + "'", e);
}
}
142,7 → 142,7
 
rlog.setRecursive(isRecursive);
 
CVSInfoImpl.logger.info("Executing CVS command '" + rlog.getCVSCommand()
log.info("Executing CVS command '" + rlog.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(rlog, cvsclient.getGlobalOptions());
149,7 → 149,7
 
getCacheInstance().put(cachekey, this.list);
} catch (ConfigurationException e) {
CVSInfoImpl.logger.error("CVS Configuration File '" + f.getAbsolutePath()
log.error("CVS Configuration File '" + f.getAbsolutePath()
+ f.getName() + "'not found.", e);
} catch (CommandAbortedException e) {
e.printStackTrace();
172,7 → 172,7
 
public Response getModules(HttpHeaders h, File f, boolean forceNoCache) {
String cachekey = "Modules" + f.toURI().toString();
CVSInfoImpl.logger.debug("forceNoCache=" + forceNoCache);
log.debug("forceNoCache=" + forceNoCache);
 
ModuleListType response = (ModuleListType) getCacheInstance().get(
cachekey);
200,12 → 200,12
CheckoutCommand co = new CheckoutCommand();
co.setShowModulesWithStatus(true);
 
CVSInfoImpl.logger.info("Executing CVS command '" + co.getCVSCommand()
log.info("Executing CVS command '" + co.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(co, cvsclient.getGlobalOptions());
if (list.getModules().size() == 0) {
CVSInfoImpl.logger.warn("Repository '"
log.warn("Repository '"
+ cvsclient.getRoot().repository
+ "' does not have modules");
}
220,14 → 220,14
 
public Response getTags(HttpHeaders h, File f, boolean withFiles) {
String cachekey = f.toURI().toString() + ":taglist";
CVSInfoImpl.logger.debug("Retrieving Tags from cache using key '" + cachekey
log.debug("Retrieving Tags from cache using key '" + cachekey
+ "'");
TagListType tags = (TagListType) getCacheInstance().get(cachekey);
if (tags != null) {
CVSInfoImpl.logger.debug("Delivering Tags from cache.");
log.debug("Delivering Tags from cache.");
return Response.ok(tags).build();
}
CVSInfoImpl.logger.warn("Taglist not found in cache.");
log.warn("Taglist not found in cache.");
return Response.noContent().build();
}
 
239,17 → 239,17
ItemListType list = null;
 
if (!forceNoCache) {
CVSInfoImpl.logger.debug("Retrieving file content from cache using key '"
log.debug("Retrieving file content from cache using key '"
+ cachekey + "'");
list = (ItemListType) getCacheInstance().get(cachekey);
}
 
if (list != null) {
CVSInfoImpl.logger.debug("Delivering file content from cache.");
log.debug("Delivering file content from cache.");
return Response.ok(list).build();
}
 
CVSInfoImpl.logger.warn("File content not found in cache.");
log.warn("File content not found in cache.");
list = this.FACTORY.createItemListType();
try {
CVSClient cvsclient = new CVSClient(f);
306,7 → 306,7
checkout.setModule(filestring);
checkout.setPipeToOutput(true);
 
CVSInfoImpl.logger.info("Execute CVS command '" + checkout.getCVSCommand()
log.info("Execute CVS command '" + checkout.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(checkout, cvsclient.getGlobalOptions());
330,10 → 330,10
CacheAccess<Object, Object> jcs = null;
String cacheinstance = "CVSCache";
try {
CVSInfoImpl.logger.trace("Getting cache instance named 'CVSCache'");
log.trace("Getting cache instance named 'CVSCache'");
jcs = JCS.getInstance("CVSCache");
} catch (CacheException e) {
CVSInfoImpl.logger.error("Failed to get cache instance", e);
log.error("Failed to get cache instance", e);
e.printStackTrace();
}
return jcs;
347,29 → 347,24
+ client.getRoot().repository;
 
String cachestring = "FINDINGS-" + cvsroot;
CVSInfoImpl.logger
.debug("Fetch searchFileContent response from cache using cachekey '"
log.debug("Fetch searchFileContent response from cache using cachekey '"
+ cachestring + "'");
FindingsListType result = (FindingsListType) getCacheInstance()
.get(cachestring);
if (result != null)
CVSInfoImpl.logger.debug("Found object for key '" + cachestring
log.debug("Found object for key '" + cachestring
+ "' in cache.");
else {
CVSInfoImpl.logger.debug("Found no object for key '" + cachestring
log.debug("Found no object for key '" + cachestring
+ "' in cache.");
}
 
if (result != null)
return Response.ok(result).build();
} catch (CommandAbortedException e) {
} catch (CommandAbortedException | AuthenticationException | ConfigurationException e) {
e.printStackTrace();
} catch (ConfigurationException e) {
e.printStackTrace();
} catch (AuthenticationException e) {
e.printStackTrace();
}
return Response.noContent().build();
return Response.noContent().build();
}
 
private AttributeType getAttribute(String name, String value) {
/xservices/trunk/src/main/java/net/brutex/xservices/ws/rs/DIMCMInfoImpl.java
33,6 → 33,7
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
 
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
39,9 → 40,8
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;
78,9 → 78,9
*
* @author Brian Rosenberger, bru(at)brutex.de
*/
@Slf4j
public class DIMCMInfoImpl implements DIMCMInfo {
 
Logger logger = LogManager.getLogger();
 
/*
* (non-Javadoc)
238,7 → 238,7
 
if (search == null || search.equals("")) {
search = "*";
logger.info("No search pattern supplied, using default '*'.");
log.info("No search pattern supplied, using default '*'.");
}
 
FileWalker finder = new FileWalker(search);
245,7 → 245,7
try {
Files.walkFileTree(dir.toPath(),
EnumSet.of(FileVisitOption.FOLLOW_LINKS), depth, finder);
logger.info("FileWalker returned '" + finder.getCount()
log.info("FileWalker returned '" + finder.getCount()
+ "' hits. '" + finder.getTotal()
+ "' files have been scanned.");
List<Path> result = finder.getResult();
261,7 → 261,7
list.add(new FileInfoType(f, baseuri));
}
} catch (IOException e2) {
logger.error(e2.getMessage(), e2);
log.error(e2.getMessage(), e2);
;
}
}
324,7 → 324,7
if (conn != null)
return conn;
} catch (Exception e) {
logger.error(e.getMessage());
log.error(e.getMessage());
}
 
/*
/xservices/trunk/src/main/java/net/brutex/xservices/ws/rs/FileInfoImpl.java
47,6 → 47,7
import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
 
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.security.DirectoryPermission;
import net.brutex.xservices.types.FileInfoType;
import net.brutex.xservices.util.FileWalker;
54,8 → 55,6
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;
 
64,11 → 63,11
*
* @author Brian Rosenberger, bru(at)brutex.de
*/
@Slf4j
public class FileInfoImpl implements FileInfo {
 
Logger logger = LogManager.getLogger();
 
/* (non-Javadoc)
* @see net.brutex.xservices.ws.rs.FileInfo#getFiles(javax.ws.rs.core.HttpHeaders, java.lang.String, boolean, boolean, int, java.lang.String, int, int)
77,19 → 76,19
{
if(dir==null) {
dir = "c:/";
logger.warn("No directory specified. Default is 'c:/'.");
log.warn("No directory specified. Default is 'c:/'.");
}
isPermitted(dir);
URI baseuri = URI.create(uriInfo.getBaseUri()+FileInfo.BASE_PATH+"getFile?file=");
logger.info(String.format("Listing directory '%s'.", dir));
log.info(String.format("Listing directory '%s'.", dir));
if (level <= 0) level = 1;
 
if ((!withDir) && (!withFiles)) withFiles = true;
String cachekey = level + "||" + withFiles + "||" + withDir + "||" + search + "||" + dir;
try {
logger.debug(String.format("Hitting cache with cachekey '%s'", cachekey));
log.debug(String.format("Hitting cache with cachekey '%s'", cachekey));
CacheAccess<Object, Object> jcs = JCS.getInstance("FileCache");
 
/*Try to retrieve the file list from the cache*/
98,9 → 97,9
if (list == null || !useCache) {
list = setDirectory(baseuri, dir, withDir, withFiles, level, search);
jcs.put(cachekey, list);
logger.debug("Stored in Cache: " + list.toString());
log.debug("Stored in Cache: " + list.toString());
} else {
logger.debug("Got from Cache: " + list.toString());
log.debug("Got from Cache: " + list.toString());
}
 
int fromIndex = 0;
110,7 → 109,7
if (toIndex > list.size()) toIndex = list.size();
if (fromIndex > toIndex) fromIndex = toIndex;
GenericEntity<List<FileInfoType>> sublist = new GenericEntity<List<FileInfoType>>(list.subList(fromIndex, toIndex)) {};
logger.info(String.format("Returning items %s to %s from total of %s items in the list.", fromIndex, toIndex, list.size()));
log.info(String.format("Returning items %s to %s from total of %s items in the list.", fromIndex, toIndex, list.size()));
return Response.ok(sublist).build();
} catch (CacheException e) {
return Response.serverError().build();
133,13 → 132,13
if(search==null || search.equals("") ) {
search = "*";
logger.info("No search pattern supplied, using default '*'.");
log.info("No search pattern supplied, using default '*'.");
}
FileWalker finder = new FileWalker(search);
try {
Files.walkFileTree(dir.toPath(), EnumSet.of(FileVisitOption.FOLLOW_LINKS), depth, finder);
logger.info("FileWalker returned '"+finder.getCount()+"' hits. '" + finder.getTotal() + "' files have been scanned.");
log.info("FileWalker returned '"+finder.getCount()+"' hits. '" + finder.getTotal() + "' files have been scanned.");
List<Path> result = finder.getResult();
for(Path f : result) {
if(! withDirectories) {
151,7 → 150,7
list.add(new FileInfoType(f, baseuri));
}
} catch (IOException e2) {
logger.error(e2.getMessage(), e2);;
log.error(e2.getMessage(), e2);;
}
}
196,7 → 195,7
//In case we can not find the media type for some reason
//the default assignment is taken, so we can
//ignore this error.
logger.debug(String.format("Could not probe media type for file '%s'. Default is '%s'", path.toString(), mime.getType()), e);
log.debug(String.format("Could not probe media type for file '%s'. Default is '%s'", path.toString(), mime.getType()), e);
}
Response r = Response.ok(path.toFile(), mime).build();
String fileName = path.getFileName().toString();
204,7 → 203,7
return r;
} catch (IOException e1) {
// TODO Auto-generated catch block
logger.error(e1.getMessage(), e1);
log.error(e1.getMessage(), e1);
return Response.serverError().build();
}
}
252,7 → 251,7
 
private boolean isPermitted(String dir) {
if(! SecurityUtils.getSubject().isPermitted( new DirectoryPermission(dir))) {
logger.warn(String.format("User '%s' does not have permission to access '%s'.",SecurityUtils.getSubject().getPrincipal(), dir ));
log.warn(String.format("User '%s' does not have permission to access '%s'.",SecurityUtils.getSubject().getPrincipal(), dir ));
throw new NotAuthorizedException(new UnauthorizedException("User does not have permission to access "+ dir));
}
return true;
/xservices/trunk/src/main/java/net/brutex/xservices/ws/rs/OpenAirInfoServiceImpl.java
8,13 → 8,12
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
 
import lombok.extern.slf4j.Slf4j;
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.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import net.brutex.mgmt.api.xml.Customer;
import net.brutex.mgmt.api.xml.DateFilter;
23,10 → 22,10
import net.brutex.mgmt.api.xml.StringEntity;
import net.brutex.mgmt.openair.OpenAirRestConnection;
 
@Slf4j
public class OpenAirInfoServiceImpl implements OpenAirInfoService {
static final Logger logger = LogManager.getLogger();
 
 
@Override
public Response getCompanies(HttpHeaders paramHttpHeaders, String search) {
OpenAirRestConnection con = getOpenAirConnection();
59,7 → 58,7
final PropertiesConfiguration props;
try {
final String config = "../openair.properties";
logger.debug("Loading Open Air connection details from " + this.getClass().getClassLoader().getResource("/")
log.debug("Loading Open Air connection details from '{}'.", this.getClass().getClassLoader().getResource("/")
+ config);
 
final URL configloc = this.getClass().getClassLoader().getResource(config);
76,12 → 75,9
 
con = new OpenAirRestConnection(JCS.getInstance("FileCache"), company, user, password);
return con;
} catch (CacheException e) {
logger.error(e);
} catch (CacheException | ConfigurationException e) {
log.error(e.getMessage());
e.printStackTrace();
} catch (ConfigurationException e) {
logger.error(e);
e.printStackTrace();
} finally {
 
}