|
From: <sta...@us...> - 2007-05-06 11:55:55
|
Revision: 188
http://jsmiparser.svn.sourceforge.net/jsmiparser/?rev=188&view=rev
Author: stappend
Date: 2007-05-06 04:55:53 -0700 (Sun, 06 May 2007)
Log Message:
-----------
Change the parser and phase to beans that can be configured using springframework, without actually making the library dependent on springframework. See SpringTest for an example of how to do that.
Modified Paths:
--------------
trunk/jsmiparser-api/pom.xml
trunk/jsmiparser-api/src/main/java/org/jsmiparser/parser/SmiDefaultParser.java
trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/check/ErrorCheckPhase.java
trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/file/FileParserPhase.java
trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/xref/XRefPhase.java
trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/DefaultProblemReporterFactory.java
trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/ProblemReporterFactory.java
Added Paths:
-----------
trunk/jsmiparser-api/src/test/java/org/jsmiparser/SpringTest.java
trunk/jsmiparser-api/src/test/resources/org/
trunk/jsmiparser-api/src/test/resources/org/jsmiparser/
trunk/jsmiparser-api/src/test/resources/org/jsmiparser/SpringTest.xml
Modified: trunk/jsmiparser-api/pom.xml
===================================================================
--- trunk/jsmiparser-api/pom.xml 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-api/pom.xml 2007-05-06 11:55:53 UTC (rev 188)
@@ -36,10 +36,31 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
- <version>2.0.3</version>
+ <version>2.0.4</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>2.0.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>2.0.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-mock</artifactId>
+ <version>2.0.4</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
Modified: trunk/jsmiparser-api/src/main/java/org/jsmiparser/parser/SmiDefaultParser.java
===================================================================
--- trunk/jsmiparser-api/src/main/java/org/jsmiparser/parser/SmiDefaultParser.java 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-api/src/main/java/org/jsmiparser/parser/SmiDefaultParser.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -32,12 +32,23 @@
public class SmiDefaultParser implements SmiParser {
protected boolean m_failOnError = false;
- protected ProblemEventHandler m_problemEventHandler;
protected ProblemReporterFactory m_problemReporterFactory;
protected FileParserPhase m_fileParserPhase;
protected XRefPhase m_xRefPhase;
protected ErrorCheckPhase m_errorCheckPhase;
+ public SmiDefaultParser() {
+ this(new DefaultProblemEventHandler());
+ }
+
+ public SmiDefaultParser(ProblemEventHandler problemEventHandler) {
+ this(new DefaultProblemReporterFactory(problemEventHandler));
+ }
+
+ public SmiDefaultParser(ProblemReporterFactory problemReporterFactory) {
+ m_problemReporterFactory = problemReporterFactory;
+ }
+
public SmiMib parse() throws SmiException {
SmiMib mib = new SmiMib(new SmiJavaCodeNamingStrategy("org.jsmiparser.mib")); // TODO
@@ -46,7 +57,7 @@
phase.process(mib);
}
- if (m_failOnError && m_problemEventHandler.isNotOk()) {
+ if (m_failOnError && getProblemReporterFactory().getProblemEventHandler().isNotOk()) {
throw new SmiException();
}
return mib;
@@ -65,20 +76,10 @@
}
public ProblemEventHandler getProblemEventHandler() {
- if (m_problemEventHandler == null) {
- m_problemEventHandler = new DefaultProblemEventHandler();
- }
- return m_problemEventHandler;
+ return m_problemReporterFactory.getProblemEventHandler();
}
-
- public void setProblemEventHandler(ProblemEventHandler problemEventHandler) {
- m_problemEventHandler = problemEventHandler;
- }
-
+
public ProblemReporterFactory getProblemReporterFactory() {
- if (m_problemReporterFactory == null) {
- m_problemReporterFactory = new DefaultProblemReporterFactory(getProblemEventHandler());
- }
return m_problemReporterFactory;
}
Modified: trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/check/ErrorCheckPhase.java
===================================================================
--- trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/check/ErrorCheckPhase.java 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/check/ErrorCheckPhase.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -1,9 +1,3 @@
-package org.jsmiparser.phase.check;
-
-import org.jsmiparser.phase.Phase;
-import org.jsmiparser.exception.SmiException;
-import org.jsmiparser.smi.SmiMib;
-
/*
* Copyright 2006 Davy Verstappen.
*
@@ -19,7 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.jsmiparser.phase.check;
+import org.jsmiparser.phase.Phase;
+import org.jsmiparser.exception.SmiException;
+import org.jsmiparser.smi.SmiMib;
+
/**
* This phase will be responsible for checking that the contents of each symbol is consistent
* and correct.
Modified: trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/file/FileParserPhase.java
===================================================================
--- trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/file/FileParserPhase.java 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/file/FileParserPhase.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -26,6 +26,9 @@
import org.jsmiparser.smi.SmiModule;
import org.jsmiparser.smi.SmiVersion;
import org.jsmiparser.util.location.Location;
+import org.jsmiparser.util.problem.ProblemReporterFactory;
+import org.jsmiparser.util.problem.ProblemEventHandler;
+import org.jsmiparser.util.problem.DefaultProblemReporterFactory;
import java.io.BufferedInputStream;
import java.io.IOException;
@@ -48,6 +51,15 @@
m_reporter = reporter;
}
+ public FileParserPhase(ProblemReporterFactory reporterFactory) {
+ m_reporter = reporterFactory.create(FileParserProblemReporter.class);
+ }
+
+ public FileParserPhase(ProblemEventHandler eventHandler) {
+ DefaultProblemReporterFactory reporterFactory = new DefaultProblemReporterFactory(eventHandler);
+ m_reporter = reporterFactory.create(FileParserProblemReporter.class);
+ }
+
public FileParserProblemReporter getFileParserProblemReporter() {
return m_reporter;
}
Modified: trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/xref/XRefPhase.java
===================================================================
--- trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/xref/XRefPhase.java 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-api/src/main/java/org/jsmiparser/phase/xref/XRefPhase.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -21,15 +21,18 @@
import org.jsmiparser.smi.SmiDefaultValue;
import org.jsmiparser.smi.SmiMib;
import org.jsmiparser.smi.SmiModule;
+import org.jsmiparser.smi.SmiOidNode;
import org.jsmiparser.smi.SmiOidValue;
import org.jsmiparser.smi.SmiSymbol;
import org.jsmiparser.smi.SmiVariable;
-import org.jsmiparser.smi.SmiOidNode;
+import org.jsmiparser.util.problem.DefaultProblemReporterFactory;
+import org.jsmiparser.util.problem.ProblemEventHandler;
+import org.jsmiparser.util.problem.ProblemReporterFactory;
import org.jsmiparser.util.token.IdToken;
import java.util.Collection;
+import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.LinkedHashMap;
public class XRefPhase implements Phase {
@@ -42,6 +45,15 @@
m_reporter = reporter;
}
+ public XRefPhase(ProblemReporterFactory reporterFactory) {
+ m_reporter = reporterFactory.create(XRefProblemReporter.class);
+ }
+
+ public XRefPhase(ProblemEventHandler eventHandler) {
+ DefaultProblemReporterFactory reporterFactory = new DefaultProblemReporterFactory(eventHandler);
+ m_reporter = reporterFactory.create(XRefProblemReporter.class);
+ }
+
public Object getOptions() {
return null;
}
Added: trunk/jsmiparser-api/src/test/java/org/jsmiparser/SpringTest.java
===================================================================
--- trunk/jsmiparser-api/src/test/java/org/jsmiparser/SpringTest.java (rev 0)
+++ trunk/jsmiparser-api/src/test/java/org/jsmiparser/SpringTest.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2007 Davy Verstappen.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jsmiparser;
+
+import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
+import org.jsmiparser.smi.SmiMib;
+
+public class SpringTest extends AbstractDependencyInjectionSpringContextTests {
+
+ private SmiMib m_mib;
+
+ @Override
+ protected String getConfigPath() {
+ return "/org/jsmiparser/SpringTest.xml";
+ }
+
+ public SmiMib getMib() {
+ return m_mib;
+ }
+
+ public void setMib(SmiMib mib) {
+ m_mib = mib;
+ }
+
+ public void test() {
+ assertEquals(44, getMib().getScalars().size());
+ assertEquals(57, getMib().getColumns().size());
+ }
+}
Added: trunk/jsmiparser-api/src/test/resources/org/jsmiparser/SpringTest.xml
===================================================================
--- trunk/jsmiparser-api/src/test/resources/org/jsmiparser/SpringTest.xml (rev 0)
+++ trunk/jsmiparser-api/src/test/resources/org/jsmiparser/SpringTest.xml 2007-05-06 11:55:53 UTC (rev 188)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
+
+ <bean id="urlListFactory"
+ class="org.jsmiparser.util.url.ClassPathURLListFactory">
+ <property name="rootPath" value="libsmi-0.4.5/mibs/"/>
+ <property name="children">
+ <list>
+ <value>iana/IANAifType-MIB</value>
+ <value>ietf/IF-MIB</value>
+ <value>ietf/SNMPv2-SMI</value>
+ <value>ietf/SNMPv2-TC</value>
+ <value>ietf/SNMPv2-CONF</value>
+ <value>ietf/SNMPv2-MIB</value>
+ </list>
+ </property>
+ </bean>
+
+ <bean id="problemEventHandler"
+ class="org.jsmiparser.util.problem.DefaultProblemEventHandler"/>
+
+ <bean id="parser"
+ class="org.jsmiparser.parser.SmiDefaultParser">
+ <constructor-arg ref="problemEventHandler"/>
+ <property name="fileParserPhase">
+ <bean class="org.jsmiparser.phase.file.FileParserPhase">
+ <constructor-arg ref="problemEventHandler"/>
+ <property name="inputUrls">
+ <bean factory-bean="urlListFactory"
+ factory-method="create"/>
+ </property>
+ </bean>
+ </property>
+ </bean>
+
+ <bean id="mib"
+ factory-bean="parser"
+ factory-method="parse"/>
+
+</beans>
\ No newline at end of file
Modified: trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/DefaultProblemReporterFactory.java
===================================================================
--- trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/DefaultProblemReporterFactory.java 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/DefaultProblemReporterFactory.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -32,6 +32,14 @@
m_problemEventHandler = ph;
}
+ public ClassLoader getClassLoader() {
+ return m_classLoader;
+ }
+
+ public ProblemEventHandler getProblemEventHandler() {
+ return m_problemEventHandler;
+ }
+
@SuppressWarnings("unchecked")
public <T> T create(Class<T> cl) {
Class[] classArray = {cl};
Modified: trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/ProblemReporterFactory.java
===================================================================
--- trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/ProblemReporterFactory.java 2007-05-06 09:49:24 UTC (rev 187)
+++ trunk/jsmiparser-util/src/main/java/org/jsmiparser/util/problem/ProblemReporterFactory.java 2007-05-06 11:55:53 UTC (rev 188)
@@ -18,4 +18,6 @@
public interface ProblemReporterFactory {
<T> T create(Class<T> cl);
+
+ ProblemEventHandler getProblemEventHandler();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|