You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ba...@apache.org on 2006/07/24 13:04:26 UTC
svn commit: r425008 - in /james/jspf/trunk/src:
main/java/org/apache/james/jspf/ main/java/org/apache/james/jspf/core/
main/java/org/apache/james/jspf/macro/
main/java/org/apache/james/jspf/parser/
main/java/org/apache/james/jspf/terms/ test/java/org/a...
Author: bago
Date: Mon Jul 24 04:04:25 2006
New Revision: 425008
URL: http://svn.apache.org/viewvc?rev=425008&view=rev
Log:
Introduced Logger service and enable DI for logging (JSPF-20)
Added:
james/jspf/trunk/src/main/java/org/apache/james/jspf/Log4JLogger.java (with props)
james/jspf/trunk/src/main/java/org/apache/james/jspf/core/LogEnabled.java (with props)
james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Logger.java (with props)
james/jspf/trunk/src/test/java/org/apache/james/jspf/ConsoleLogger.java (with props)
Modified:
james/jspf/trunk/src/main/java/org/apache/james/jspf/DNSServiceXBillImpl.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/macro/MacroExpand.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/parser/SPF1Parser.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExistsMechanism.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java
james/jspf/trunk/src/test/java/org/apache/james/jspf/LoggingDNSService.java
james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1ParserTest.java
james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFMailZoneTest.java
james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFTest.java
james/jspf/trunk/src/test/java/org/apache/james/jspf/macro/MacroExpandTest.java
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/DNSServiceXBillImpl.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/DNSServiceXBillImpl.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/DNSServiceXBillImpl.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/DNSServiceXBillImpl.java Mon Jul 24 04:04:25 2006
@@ -28,10 +28,10 @@
import org.apache.james.jspf.core.DNSService;
import org.apache.james.jspf.core.IPAddr;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.exceptions.NoneException;
import org.apache.james.jspf.exceptions.PermErrorException;
import org.apache.james.jspf.exceptions.TempErrorException;
-import org.apache.log4j.Logger;
import org.xbill.DNS.AAAARecord;
import org.xbill.DNS.ARecord;
import org.xbill.DNS.Lookup;
@@ -53,7 +53,14 @@
// Set seconds after which we return and TempError
private static int timeOut = 20;
- private static Logger log = Logger.getLogger(DNSServiceXBillImpl.class);
+ private Logger log;
+
+ /**
+ * Default Constructor
+ */
+ public DNSServiceXBillImpl(Logger logger) {
+ this.log = logger;
+ }
/**
* @see org.apache.james.jspf.core.DNSService#getSpfRecord(java.lang.String,
@@ -109,7 +116,7 @@
* @throws PermErrorException
* if an PermError should be returned
*/
- private static ArrayList getTXTRecords(String hostname)
+ private ArrayList getTXTRecords(String hostname)
throws NoneException, TempErrorException {
ArrayList txtR = new ArrayList();
Record[] records;
@@ -418,7 +425,7 @@
* @throws TempErrorException
* if the lookup result was "TRY_AGAIN"
*/
- private static ArrayList getMXNames(String host) throws NoneException,
+ private ArrayList getMXNames(String host) throws NoneException,
TempErrorException {
ArrayList mxR = new ArrayList();
Record[] records;
Added: james/jspf/trunk/src/main/java/org/apache/james/jspf/Log4JLogger.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/Log4JLogger.java?rev=425008&view=auto
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/Log4JLogger.java (added)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/Log4JLogger.java Mon Jul 24 04:04:25 2006
@@ -0,0 +1,207 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.jspf;
+
+import org.apache.james.jspf.core.Logger;
+import org.apache.log4j.Level;
+
+/**
+ * Implementation of the Logger interface using the Log4J implementation
+ * strategy.
+ */
+public class Log4JLogger implements Logger {
+ private org.apache.log4j.Logger m_Logger;
+
+ Log4JLogger(org.apache.log4j.Logger log4jLogger) {
+ m_Logger = log4jLogger;
+ }
+
+ /**
+ * Log a debug message.
+ *
+ * @param message
+ * the message
+ */
+ public void debug(String message) {
+ m_Logger.debug(message);
+ }
+
+ /**
+ * Log a debug message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ public void debug(String message, Throwable throwable) {
+ m_Logger.debug(message, throwable);
+ }
+
+ /**
+ * Determine if messages of priority "debug" will be logged.
+ *
+ * @return true if "debug" messages will be logged
+ */
+ public boolean isDebugEnabled() {
+ return m_Logger.isDebugEnabled();
+ }
+
+ /**
+ * Log a info message.
+ *
+ * @param message
+ * the message
+ */
+ public void info(String message) {
+ m_Logger.info(message);
+ }
+
+ /**
+ * Log a info message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ public void info(String message, Throwable throwable) {
+ m_Logger.info(message, throwable);
+ }
+
+ /**
+ * Determine if messages of priority "info" will be logged.
+ *
+ * @return true if "info" messages will be logged
+ */
+ public boolean isInfoEnabled() {
+ return m_Logger.isInfoEnabled();
+ }
+
+ /**
+ * Log a warn message.
+ *
+ * @param message
+ * the message
+ */
+ public void warn(String message) {
+ m_Logger.warn(message);
+ }
+
+ /**
+ * Log a warn message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ public void warn(String message, Throwable throwable) {
+ m_Logger.warn(message, throwable);
+ }
+
+ /**
+ * Determine if messages of priority "warn" will be logged.
+ *
+ * @return true if "warn" messages will be logged
+ */
+ public boolean isWarnEnabled() {
+ return m_Logger.isEnabledFor(Level.WARN);
+ }
+
+ /**
+ * Log a error message.
+ *
+ * @param message
+ * the message
+ */
+ public void error(String message) {
+ m_Logger.error(message);
+ }
+
+ /**
+ * Log a error message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ public void error(String message, Throwable throwable) {
+ m_Logger.error(message, throwable);
+ }
+
+ /**
+ * Determine if messages of priority "error" will be logged.
+ *
+ * @return true if "error" messages will be logged
+ */
+ public boolean isErrorEnabled() {
+ return m_Logger.isEnabledFor(Level.ERROR);
+ }
+
+ /**
+ * Log a fatalError message.
+ *
+ * @param message
+ * the message
+ */
+ public void fatalError(String message) {
+ m_Logger.fatal(message);
+ }
+
+ /**
+ * Log a fatalError message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ public void fatalError(String message, Throwable throwable) {
+ m_Logger.fatal(message, throwable);
+ }
+
+ /**
+ * Determine if messages of priority "fatalError" will be logged.
+ *
+ * @return true if "fatalError" messages will be logged
+ */
+ public boolean isFatalErrorEnabled() {
+ return m_Logger.isEnabledFor(Level.FATAL);
+ }
+
+ /**
+ * Create a new child logger. The name of the child logger is
+ * [current-loggers-name].[passed-in-name] Throws
+ * <code>IllegalArgumentException</code> if name has an empty element name
+ *
+ * @param name
+ * the subname of this logger
+ * @return the new logger
+ */
+ public Logger getChildLogger(String name) {
+ String newName = m_Logger.getName() + "." + name;
+ org.apache.log4j.Logger childLog4JLogger = org.apache.log4j.Logger
+ .getLogger(newName);
+ Log4JLogger child = new Log4JLogger(childLog4JLogger);
+ return child;
+ }
+}
Propchange: james/jspf/trunk/src/main/java/org/apache/james/jspf/Log4JLogger.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java Mon Jul 24 04:04:25 2006
@@ -22,6 +22,7 @@
import org.apache.james.jspf.core.DNSService;
import org.apache.james.jspf.core.Directive;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.Modifier;
import org.apache.james.jspf.core.SPF1Constants;
import org.apache.james.jspf.core.SPF1Data;
@@ -31,7 +32,6 @@
import org.apache.james.jspf.exceptions.TempErrorException;
import org.apache.james.jspf.macro.MacroExpand;
import org.apache.james.jspf.parser.SPF1Parser;
-import org.apache.log4j.Logger;
import java.util.Iterator;
@@ -42,28 +42,36 @@
public class SPF {
- private DNSService dnsProbe = null;
+ private DNSService dnsProbe;
private SPF1Parser parser;
- private static Logger log = Logger.getLogger(SPF.class);
+ private Logger log;
/**
- *
+ * Uses default Log4JLogger and DNSJava based dns resolver
*/
public SPF() {
- this(new DNSServiceXBillImpl());
-
+ this(new Log4JLogger(org.apache.log4j.Logger.getLogger(SPF.class)));
+ }
+
+ /**
+ * Uses passed logger and DNSJava based dns resolver
+ * @param logger logger
+ */
+ public SPF(Logger logger) {
+ this(new DNSServiceXBillImpl(logger), logger);
}
/**
* @param dnsProbe
* the dns provider
*/
- public SPF(DNSService dnsProbe) {
+ public SPF(DNSService dnsProbe, Logger logger) {
super();
this.dnsProbe = dnsProbe;
- this.parser = new SPF1Parser();
+ this.parser = new SPF1Parser(logger);
+ this.log = logger;
}
/**
@@ -92,18 +100,18 @@
result = SPF1Utils.resultToName(resultChar);
explanation = res.getExplanation();
} catch (PermErrorException e) {
- log.warn(e.getMessage());
+ log.warn(e.getMessage(),e);
result = SPF1Utils.PERM_ERROR;
} catch (NoneException e) {
- log.warn(e.getMessage());
+ log.warn(e.getMessage(),e);
result = SPF1Utils.NONE;
} catch (TempErrorException e) {
- log.warn(e.getMessage());
+ log.warn(e.getMessage(),e);
result = SPF1Utils.TEMP_ERROR;
} catch (IllegalStateException e) {
// this should never happen at all. But anyway we will set the
// result to neutral. Safety first ..
- log.error(e.getMessage());
+ log.error(e.getMessage(),e);
result = SPF1Constants.NEUTRAL;
}
@@ -240,7 +248,7 @@
if (result.equals(SPF1Constants.FAIL)) {
if (spfData.getExplanation()==null || spfData.getExplanation().equals("")) {
try {
- spfData.setExplanation(new MacroExpand(spfData)
+ spfData.setExplanation(new MacroExpand(spfData, log)
.expandExplanation(SPF1Utils.DEFAULT_EXPLANATION));
} catch (PermErrorException e) {}
}
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java Mon Jul 24 04:04:25 2006
@@ -90,7 +90,7 @@
// check if all needed values was set
if (ip != null && sender != null && helo != null) {
- SPF spf = new SPF();
+ SPF spf = new SPF(new Log4JLogger(logger));
SPFResult result = spf.checkSPF(ip, sender, helo);
System.out.println(result.getResult());
System.out.println(result.getHeader());
Added: james/jspf/trunk/src/main/java/org/apache/james/jspf/core/LogEnabled.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/core/LogEnabled.java?rev=425008&view=auto
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/core/LogEnabled.java (added)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/core/LogEnabled.java Mon Jul 24 04:04:25 2006
@@ -0,0 +1,34 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.jspf.core;
+
+/**
+ * Components that need to log can implement this interface to be provided
+ * Loggers.
+ */
+public interface LogEnabled {
+ /**
+ * Provide component with a logger.
+ *
+ * @param logger
+ * the logger. Must not be <code>null</code>.
+ */
+ void enableLogging(Logger logger);
+}
\ No newline at end of file
Propchange: james/jspf/trunk/src/main/java/org/apache/james/jspf/core/LogEnabled.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Logger.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Logger.java?rev=425008&view=auto
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Logger.java (added)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Logger.java Mon Jul 24 04:04:25 2006
@@ -0,0 +1,163 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.jspf.core;
+
+/**
+ * This is a facade for the different logging subsystems. It offers a simplified
+ * interface that follows IOC patterns and a simplified priority/level/severity
+ * abstraction.
+ */
+public interface Logger {
+ /**
+ * Log a debug message.
+ *
+ * @param message
+ * the message
+ */
+ void debug(String message);
+
+ /**
+ * Log a debug message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ void debug(String message, Throwable throwable);
+
+ /**
+ * Determine if messages of priority "debug" will be logged.
+ *
+ * @return true if "debug" messages will be logged
+ */
+ boolean isDebugEnabled();
+
+ /**
+ * Log a info message.
+ *
+ * @param message
+ * the message
+ */
+ void info(String message);
+
+ /**
+ * Log a info message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ void info(String message, Throwable throwable);
+
+ /**
+ * Determine if messages of priority "info" will be logged.
+ *
+ * @return true if "info" messages will be logged
+ */
+ boolean isInfoEnabled();
+
+ /**
+ * Log a warn message.
+ *
+ * @param message
+ * the message
+ */
+ void warn(String message);
+
+ /**
+ * Log a warn message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ void warn(String message, Throwable throwable);
+
+ /**
+ * Determine if messages of priority "warn" will be logged.
+ *
+ * @return true if "warn" messages will be logged
+ */
+ boolean isWarnEnabled();
+
+ /**
+ * Log a error message.
+ *
+ * @param message
+ * the message
+ */
+ void error(String message);
+
+ /**
+ * Log a error message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ void error(String message, Throwable throwable);
+
+ /**
+ * Determine if messages of priority "error" will be logged.
+ *
+ * @return true if "error" messages will be logged
+ */
+ boolean isErrorEnabled();
+
+ /**
+ * Log a fatalError message.
+ *
+ * @param message
+ * the message
+ */
+ void fatalError(String message);
+
+ /**
+ * Log a fatalError message.
+ *
+ * @param message
+ * the message
+ * @param throwable
+ * the throwable
+ */
+ void fatalError(String message, Throwable throwable);
+
+ /**
+ * Determine if messages of priority "fatalError" will be logged.
+ *
+ * @return true if "fatalError" messages will be logged
+ */
+ boolean isFatalErrorEnabled();
+
+ /**
+ * Create a new child logger. The name of the child logger is
+ * [current-loggers-name].[passed-in-name] Throws
+ * <code>IllegalArgumentException</code> if name has an empty element name
+ *
+ * @param name
+ * the subname of this logger
+ * @return the new logger
+ */
+ Logger getChildLogger(String name);
+}
Propchange: james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Logger.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/macro/MacroExpand.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/macro/MacroExpand.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/macro/MacroExpand.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/macro/MacroExpand.java Mon Jul 24 04:04:25 2006
@@ -26,8 +26,8 @@
*
*/
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.exceptions.PermErrorException;
-import org.apache.log4j.Logger;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
@@ -51,11 +51,12 @@
private boolean isExplanation = false;
- private static Logger log = Logger.getLogger(MacroExpand.class);
+ private Logger log;
- public MacroExpand(MacroData spfData) {
+ public MacroExpand(MacroData spfData, Logger logger) {
this.spfData = spfData;
inputPattern = Pattern.compile(MACRO_REGEX);
+ log = logger;
}
/**
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/parser/SPF1Parser.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/parser/SPF1Parser.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/parser/SPF1Parser.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/parser/SPF1Parser.java Mon Jul 24 04:04:25 2006
@@ -22,6 +22,8 @@
import org.apache.james.jspf.core.Configurable;
import org.apache.james.jspf.core.Directive;
+import org.apache.james.jspf.core.LogEnabled;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.Mechanism;
import org.apache.james.jspf.core.Modifier;
import org.apache.james.jspf.core.SPF1Constants;
@@ -29,7 +31,6 @@
import org.apache.james.jspf.exceptions.NoneException;
import org.apache.james.jspf.exceptions.PermErrorException;
import org.apache.james.jspf.util.ConfigurationMatch;
-import org.apache.log4j.Logger;
import java.io.IOException;
import java.io.InputStream;
@@ -154,7 +155,7 @@
private List matchResultPositions;
- private static Logger log = Logger.getLogger(SPF1Parser.class);
+ private Logger log;
private String termFile = "org/apache/james/jspf/parser/jspf.default.terms";
@@ -210,8 +211,8 @@
/**
* Constructor. Creates all the values needed to run the parsing
*/
- public SPF1Parser() {
-
+ public SPF1Parser(Logger logger) {
+ log = logger;
try {
InputStream is = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(termFile);
@@ -494,6 +495,9 @@
.getMatchSize());
try {
Object term = c.getTermDef().newInstance();
+ if (term instanceof LogEnabled) {
+ ((LogEnabled) term).enableLogging(log);
+ }
if (term instanceof Configurable) {
if (subres == null || subres.groupCount() == 0) {
((Configurable) term).config(null);
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExistsMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExistsMechanism.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExistsMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExistsMechanism.java Mon Jul 24 04:04:25 2006
@@ -53,7 +53,7 @@
String host = expandHost(spfData);
try {
- host = new MacroExpand(spfData).expandDomain(host);
+ host = new MacroExpand(spfData, log).expandDomain(host);
} catch (Exception e) {
throw new PermErrorException(e.getMessage());
}
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java Mon Jul 24 04:04:25 2006
@@ -20,6 +20,8 @@
package org.apache.james.jspf.terms;
+import org.apache.james.jspf.core.LogEnabled;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.SPF1Constants;
import org.apache.james.jspf.core.SPF1Data;
import org.apache.james.jspf.exceptions.NoneException;
@@ -32,7 +34,7 @@
* This class represent the exp modifier
*
*/
-public class ExpModifier extends GenericModifier {
+public class ExpModifier extends GenericModifier implements LogEnabled {
/**
* ABNF: explanation = "exp" "=" domain-spec
@@ -40,6 +42,8 @@
public static final String REGEX = "[eE][xX][pP]" + "\\="
+ SPF1Parser.DOMAIN_SPEC_REGEX;
+ private Logger log;
+
/**
* Generate the explanation and set it in SPF1Data so it can be accessed
* easy later if needed
@@ -62,7 +66,7 @@
return null;
try {
- host = new MacroExpand(spfData).expandDomain(host);
+ host = new MacroExpand(spfData, log).expandDomain(host);
try {
exp = spfData.getDnsProbe().getTxtCatType(host);
} catch (NoneException e) {
@@ -74,7 +78,7 @@
}
if ((exp != null) && (!exp.equals(""))) {
- spfData.setExplanation(new MacroExpand(spfData)
+ spfData.setExplanation(new MacroExpand(spfData, log)
.expandExplanation(exp));
}
} catch (PermErrorException e) {
@@ -89,6 +93,13 @@
*/
public boolean enforceSingleInstance() {
return true;
+ }
+
+ /**
+ * @see org.apache.james.jspf.core.LogEnabled#enableLogging(org.apache.james.jspf.core.Logger)
+ */
+ public void enableLogging(Logger logger) {
+ this.log = logger;
}
}
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java Mon Jul 24 04:04:25 2006
@@ -21,6 +21,8 @@
package org.apache.james.jspf.terms;
import org.apache.james.jspf.core.Configurable;
+import org.apache.james.jspf.core.LogEnabled;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.Mechanism;
import org.apache.james.jspf.core.SPF1Data;
import org.apache.james.jspf.exceptions.PermErrorException;
@@ -31,7 +33,7 @@
* This abstract class represent a gerneric mechanism
*
*/
-public abstract class GenericMechanism implements Mechanism, Configurable {
+public abstract class GenericMechanism implements Mechanism, Configurable, LogEnabled {
/**
* ABNF: ip4-cidr-length = "/" 1*DIGIT
@@ -52,6 +54,8 @@
private String domain;
+ protected Logger log;
+
/**
* Expand the hostname
*
@@ -64,7 +68,7 @@
host = spfData.getCurrentDomain();
} else {
try {
- host = new MacroExpand(spfData).expandDomain(host);
+ host = new MacroExpand(spfData, log).expandDomain(host);
} catch (Exception e) {
throw new PermErrorException(e.getMessage());
@@ -89,6 +93,13 @@
*/
protected synchronized String getDomain() {
return domain;
+ }
+
+ /**
+ * @see org.apache.james.jspf.core.LogEnabled#enableLogging(org.apache.james.jspf.core.Logger)
+ */
+ public void enableLogging(Logger logger) {
+ this.log = logger;
}
}
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java Mon Jul 24 04:04:25 2006
@@ -22,6 +22,8 @@
import org.apache.james.jspf.SPF;
import org.apache.james.jspf.core.Configurable;
+import org.apache.james.jspf.core.LogEnabled;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.Mechanism;
import org.apache.james.jspf.core.SPF1Constants;
import org.apache.james.jspf.core.SPF1Data;
@@ -36,7 +38,7 @@
* This class represent the incude mechanism
*
*/
-public class IncludeMechanism implements Mechanism, Configurable {
+public class IncludeMechanism implements Mechanism, Configurable, LogEnabled {
/**
* ABNF: include = "include" ":" domain-spec
@@ -45,6 +47,8 @@
+ SPF1Parser.DOMAIN_SPEC_REGEX;
private String host;
+
+ private Logger log;
/**
* Set the host which should be used for include
@@ -64,7 +68,7 @@
spfData.setCurrentDepth(spfData.getCurrentDepth() + 1);
try {
- host = new MacroExpand(spfData).expandDomain(host);
+ host = new MacroExpand(spfData, log).expandDomain(host);
} catch (Exception e) {
throw new PermErrorException("Error in include modifier: " + host);
}
@@ -76,7 +80,7 @@
String res = null;
try {
- res = new SPF(spfData.getDnsProbe()).checkSPF(spfData).getResultChar();
+ res = new SPF(spfData.getDnsProbe(),log).checkSPF(spfData).getResultChar();
} catch (NoneException e) {
throw new PermErrorException("included checkSPF returned NoneException");
}
@@ -111,6 +115,13 @@
*/
protected synchronized String getHost() {
return host;
+ }
+
+ /**
+ * @see org.apache.james.jspf.core.LogEnabled#enableLogging(org.apache.james.jspf.core.Logger)
+ */
+ public void enableLogging(Logger logger) {
+ this.log = logger;
}
}
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java Mon Jul 24 04:04:25 2006
@@ -21,6 +21,8 @@
package org.apache.james.jspf.terms;
import org.apache.james.jspf.SPF;
+import org.apache.james.jspf.core.LogEnabled;
+import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.SPF1Data;
import org.apache.james.jspf.exceptions.NoneException;
import org.apache.james.jspf.exceptions.PermErrorException;
@@ -32,13 +34,15 @@
* This class represent the redirect modifier
*
*/
-public class RedirectModifier extends GenericModifier {
+public class RedirectModifier extends GenericModifier implements LogEnabled {
/**
* ABNF: redirect = "redirect" "=" domain-spec
*/
public static final String REGEX = "[rR][eE][dD][iI][rR][eE][cC][tT]"
+ "\\=" + SPF1Parser.DOMAIN_SPEC_REGEX;
+
+ private Logger log;
/**
* Set the host which should be used for redirection and set it in SPF1Data
@@ -63,7 +67,7 @@
spfData.setCurrentDepth(spfData.getCurrentDepth() + 1);
try {
- host = new MacroExpand(spfData).expandDomain(host);
+ host = new MacroExpand(spfData, log).expandDomain(host);
} catch (Exception e) {
throw new PermErrorException("Error in redirect modifier: "
+ host);
@@ -73,7 +77,7 @@
String res = null;
try {
- res = new SPF(spfData.getDnsProbe()).checkSPF(spfData).getResultChar();
+ res = new SPF(spfData.getDnsProbe(),log).checkSPF(spfData).getResultChar();
} catch (NoneException e) {
@@ -98,6 +102,14 @@
*/
public boolean enforceSingleInstance() {
return true;
+ }
+
+
+ /**
+ * @see org.apache.james.jspf.core.LogEnabled#enableLogging(org.apache.james.jspf.core.Logger)
+ */
+ public void enableLogging(Logger logger) {
+ this.log = logger;
}
}
Added: james/jspf/trunk/src/test/java/org/apache/james/jspf/ConsoleLogger.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/ConsoleLogger.java?rev=425008&view=auto
==============================================================================
--- james/jspf/trunk/src/test/java/org/apache/james/jspf/ConsoleLogger.java (added)
+++ james/jspf/trunk/src/test/java/org/apache/james/jspf/ConsoleLogger.java Mon Jul 24 04:04:25 2006
@@ -0,0 +1,280 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.jspf;
+
+import org.apache.james.jspf.core.Logger;
+
+/**
+ * Logger sending everything to the standard output streams.
+ * This is mainly for the cases when you have a utility that
+ * does not have a logger to supply.
+ */
+public final class ConsoleLogger
+ implements Logger
+{
+ /** Typecode for debugging messages. */
+ public static final int LEVEL_DEBUG = 0;
+
+ /** Typecode for informational messages. */
+ public static final int LEVEL_INFO = 1;
+
+ /** Typecode for warning messages. */
+ public static final int LEVEL_WARN = 2;
+
+ /** Typecode for error messages. */
+ public static final int LEVEL_ERROR = 3;
+
+ /** Typecode for fatal error messages. */
+ public static final int LEVEL_FATAL = 4;
+
+ /** Typecode for disabled log levels. */
+ public static final int LEVEL_DISABLED = 5;
+
+ private final int m_logLevel;
+
+ /**
+ * Creates a new ConsoleLogger with the priority set to DEBUG.
+ */
+ public ConsoleLogger()
+ {
+ this( LEVEL_DEBUG );
+ }
+
+ /**
+ * Creates a new ConsoleLogger.
+ * @param logLevel log level typecode
+ */
+ public ConsoleLogger( final int logLevel )
+ {
+ m_logLevel = logLevel;
+ }
+
+ /**
+ * Logs a debugging message.
+ *
+ * @param message a <code>String</code> value
+ */
+ public void debug( final String message )
+ {
+ debug( message, null );
+ }
+
+ /**
+ * Logs a debugging message and an exception.
+ *
+ * @param message a <code>String</code> value
+ * @param throwable a <code>Throwable</code> value
+ */
+ public void debug( final String message, final Throwable throwable )
+ {
+ if( m_logLevel <= LEVEL_DEBUG )
+ {
+ System.out.print( "[DEBUG] " );
+ System.out.println( message );
+
+ if( null != throwable )
+ {
+ throwable.printStackTrace( System.out );
+ }
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if debug-level logging is enabled, false otherwise.
+ *
+ * @return <code>true</code> if debug-level logging
+ */
+ public boolean isDebugEnabled()
+ {
+ return m_logLevel <= LEVEL_DEBUG;
+ }
+
+ /**
+ * Logs an informational message.
+ *
+ * @param message a <code>String</code> value
+ */
+ public void info( final String message )
+ {
+ info( message, null );
+ }
+
+ /**
+ * Logs an informational message and an exception.
+ *
+ * @param message a <code>String</code> value
+ * @param throwable a <code>Throwable</code> value
+ */
+ public void info( final String message, final Throwable throwable )
+ {
+ if( m_logLevel <= LEVEL_INFO )
+ {
+ System.out.print( "[INFO] " );
+ System.out.println( message );
+
+ if( null != throwable )
+ {
+ throwable.printStackTrace( System.out );
+ }
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if info-level logging is enabled, false otherwise.
+ *
+ * @return <code>true</code> if info-level logging is enabled
+ */
+ public boolean isInfoEnabled()
+ {
+ return m_logLevel <= LEVEL_INFO;
+ }
+
+ /**
+ * Logs a warning message.
+ *
+ * @param message a <code>String</code> value
+ */
+ public void warn( final String message )
+ {
+ warn( message, null );
+ }
+
+ /**
+ * Logs a warning message and an exception.
+ *
+ * @param message a <code>String</code> value
+ * @param throwable a <code>Throwable</code> value
+ */
+ public void warn( final String message, final Throwable throwable )
+ {
+ if( m_logLevel <= LEVEL_WARN )
+ {
+ System.out.print( "[WARNING] " );
+ System.out.println( message );
+
+ if( null != throwable )
+ {
+ throwable.printStackTrace( System.out );
+ }
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if warn-level logging is enabled, false otherwise.
+ *
+ * @return <code>true</code> if warn-level logging is enabled
+ */
+ public boolean isWarnEnabled()
+ {
+ return m_logLevel <= LEVEL_WARN;
+ }
+
+ /**
+ * Logs an error message.
+ *
+ * @param message a <code>String</code> value
+ */
+ public void error( final String message )
+ {
+ error( message, null );
+ }
+
+ /**
+ * Logs an error message and an exception.
+ *
+ * @param message a <code>String</code> value
+ * @param throwable a <code>Throwable</code> value
+ */
+ public void error( final String message, final Throwable throwable )
+ {
+ if( m_logLevel <= LEVEL_ERROR )
+ {
+ System.out.print( "[ERROR] " );
+ System.out.println( message );
+
+ if( null != throwable )
+ {
+ throwable.printStackTrace( System.out );
+ }
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if error-level logging is enabled, false otherwise.
+ *
+ * @return <code>true</code> if error-level logging is enabled
+ */
+ public boolean isErrorEnabled()
+ {
+ return m_logLevel <= LEVEL_ERROR;
+ }
+
+ /**
+ * Logs a fatal error message.
+ *
+ * @param message a <code>String</code> value
+ */
+ public void fatalError( final String message )
+ {
+ fatalError( message, null );
+ }
+
+ /**
+ * Logs a fatal error message and an exception.
+ *
+ * @param message a <code>String</code> value
+ * @param throwable a <code>Throwable</code> value
+ */
+ public void fatalError( final String message, final Throwable throwable )
+ {
+ if( m_logLevel <= LEVEL_FATAL )
+ {
+ System.out.print( "[FATAL ERROR] " );
+ System.out.println( message );
+
+ if( null != throwable )
+ {
+ throwable.printStackTrace( System.out );
+ }
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if fatal-level logging is enabled, false otherwise.
+ *
+ * @return <code>true</code> if fatal-level logging is enabled
+ */
+ public boolean isFatalErrorEnabled()
+ {
+ return m_logLevel <= LEVEL_FATAL;
+ }
+
+ /**
+ * Just returns this logger (<code>ConsoleLogger</code> is not hierarchical).
+ *
+ * @param name ignored
+ * @return this logger
+ */
+ public Logger getChildLogger( final String name )
+ {
+ return this;
+ }
+}
\ No newline at end of file
Propchange: james/jspf/trunk/src/test/java/org/apache/james/jspf/ConsoleLogger.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: james/jspf/trunk/src/test/java/org/apache/james/jspf/LoggingDNSService.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/LoggingDNSService.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/test/java/org/apache/james/jspf/LoggingDNSService.java (original)
+++ james/jspf/trunk/src/test/java/org/apache/james/jspf/LoggingDNSService.java Mon Jul 24 04:04:25 2006
@@ -32,7 +32,7 @@
public class LoggingDNSService implements DNSService {
- private DNSService dnsService = new DNSServiceXBillImpl();
+ private DNSService dnsService = new DNSServiceXBillImpl(new ConsoleLogger());
public String getSpfRecord(String hostname, String spfVersion)
throws PermErrorException, NoneException, TempErrorException {
Modified: james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1ParserTest.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1ParserTest.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1ParserTest.java (original)
+++ james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1ParserTest.java Mon Jul 24 04:04:25 2006
@@ -50,7 +50,7 @@
}
}
assertNotNull(data);
- parser = new SPF1Parser();
+ parser = new SPF1Parser(new ConsoleLogger());
}
public static Test suite() throws IOException {
@@ -176,7 +176,7 @@
super();
List tests = loadTests();
Iterator i = tests.iterator();
- SPF1Parser parser = new SPF1Parser();
+ SPF1Parser parser = new SPF1Parser(new ConsoleLogger());
while (i.hasNext()) {
addTest(new SPF1ParserTest((SPF1RecordTestDef) i.next(), parser));
}
Modified: james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFMailZoneTest.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFMailZoneTest.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFMailZoneTest.java (original)
+++ james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFMailZoneTest.java Mon Jul 24 04:04:25 2006
@@ -48,7 +48,7 @@
}
}
assertNotNull(data);
- spf = new SPF(new SPF1TestMZMockDNSService());
+ spf = new SPF(new SPF1TestMZMockDNSService(), new ConsoleLogger());
}
public static Test suite() throws IOException {
@@ -233,7 +233,7 @@
super();
List tests = loadTests();
Iterator i = tests.iterator();
- SPF spf = new SPF(new SPF1TestMZMockDNSService());
+ SPF spf = new SPF(new SPF1TestMZMockDNSService(), new ConsoleLogger());
while (i.hasNext()) {
addTest(new SPFMailZoneTest(spf, (SPFTestDef) i.next()));
}
Modified: james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFTest.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFTest.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFTest.java (original)
+++ james/jspf/trunk/src/test/java/org/apache/james/jspf/SPFTest.java Mon Jul 24 04:04:25 2006
@@ -48,7 +48,7 @@
}
}
assertNotNull(data);
- spf = new SPF(new SPF1TestMockDNSService());
+ spf = new SPF(new SPF1TestMockDNSService(), new ConsoleLogger());
}
public static Test suite() throws IOException {
@@ -241,7 +241,7 @@
super();
List tests = loadTests();
Iterator i = tests.iterator();
- SPF spf = new SPF(new SPF1TestMockDNSService());
+ SPF spf = new SPF(new SPF1TestMockDNSService(), new ConsoleLogger());
while (i.hasNext()) {
addTest(new SPFTest(spf, (SPFTestDef) i.next()));
}
Modified: james/jspf/trunk/src/test/java/org/apache/james/jspf/macro/MacroExpandTest.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/macro/MacroExpandTest.java?rev=425008&r1=425007&r2=425008&view=diff
==============================================================================
--- james/jspf/trunk/src/test/java/org/apache/james/jspf/macro/MacroExpandTest.java (original)
+++ james/jspf/trunk/src/test/java/org/apache/james/jspf/macro/MacroExpandTest.java Mon Jul 24 04:04:25 2006
@@ -19,6 +19,7 @@
package org.apache.james.jspf.macro;
+import org.apache.james.jspf.ConsoleLogger;
import org.apache.james.jspf.exceptions.PermErrorException;
import junit.framework.TestCase;
@@ -102,8 +103,8 @@
protected void setUp() throws Exception {
super.setUp();
- defIp4me = new MacroExpand(new rfcIP4MacroData());
- defIp6me = new MacroExpand(new rfcIP6MacroData());
+ defIp4me = new MacroExpand(new rfcIP4MacroData(), new ConsoleLogger());
+ defIp6me = new MacroExpand(new rfcIP6MacroData(), new ConsoleLogger());
}
public void testPercS() throws PermErrorException {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org