summaryrefslogtreecommitdiffstats
path: root/branches/sca-equinox/modules/monitor/src
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-equinox/modules/monitor/src')
-rw-r--r--branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/DefaultMonitorFactory.java (renamed from branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/DefaultMonitorFactoryImpl.java)12
-rw-r--r--branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/Monitor.java35
-rw-r--r--branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/MonitorFactory.java3
-rw-r--r--branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/MonitorImpl.java (renamed from branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/DefaultMonitorImpl.java)30
-rw-r--r--branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/ProblemImpl.java132
-rw-r--r--branches/sca-equinox/modules/monitor/src/test/java/org/apache/tuscany/sca/monitor/MonitorTestCase.java92
-rw-r--r--branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages.properties24
-rw-r--r--branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages_it.properties24
8 files changed, 325 insertions, 27 deletions
diff --git a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/DefaultMonitorFactoryImpl.java b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/DefaultMonitorFactory.java
index 274b4faefd..b38968caeb 100644
--- a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/DefaultMonitorFactoryImpl.java
+++ b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/DefaultMonitorFactory.java
@@ -17,10 +17,9 @@
* under the License.
*/
-package org.apache.tuscany.sca.monitor.impl;
+package org.apache.tuscany.sca.monitor;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
+import org.apache.tuscany.sca.monitor.impl.MonitorImpl;
/**
@@ -28,14 +27,15 @@ import org.apache.tuscany.sca.monitor.MonitorFactory;
*
* @version $Rev$ $Date$
*/
-public class DefaultMonitorFactoryImpl implements MonitorFactory {
+public class DefaultMonitorFactory implements MonitorFactory {
private Monitor monitor = null;
public Monitor createMonitor() {
- if (monitor == null){
- monitor = new DefaultMonitorImpl();
+ if (monitor == null) {
+ monitor = new MonitorImpl();
}
return monitor ;
}
+
}
diff --git a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/Monitor.java b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/Monitor.java
index c16140213d..ef49ddd323 100644
--- a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/Monitor.java
+++ b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/Monitor.java
@@ -21,6 +21,8 @@ package org.apache.tuscany.sca.monitor;
import java.util.List;
+import org.apache.tuscany.sca.monitor.Problem.Severity;
+
/**
* A monitor for the watching for validation problems
*
@@ -41,4 +43,37 @@ public interface Monitor {
*/
List<Problem> getProblems();
+ /**
+ * Returns the last logged problem.
+ *
+ * @return
+ */
+ public Problem getLastLoggedProblem();
+
+ /**
+ * Create a new problem.
+ *
+ * @param sourceClassName the class name reporting the problem
+ * @param bundleName the name of the message bundle to use
+ * @param severity the severity of the problem
+ * @param problemObject the model object for which the problem is being reported
+ * @param messageId the id of the problem message
+ * @param cause the exception which caused the problem
+ * @return
+ */
+ Problem createProblem(String sourceClassName, String bundleName, Severity severity, Object problemObject, String messageId, Exception cause);
+
+ /**
+ * Create a new problem.
+ *
+ * @param sourceClassName the class name reporting the problem
+ * @param bundleName the name of the message bundle to use
+ * @param severity the severity of the problem
+ * @param problemObject the model object for which the problem is being reported
+ * @param messageId the id of the problem message
+ * @param messageParams the parameters of the problem message
+ * @return
+ */
+ Problem createProblem(String sourceClassName, String bundleName, Severity severity, Object problemObject, String messageId, Object... messageParams );
+
}
diff --git a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/MonitorFactory.java b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/MonitorFactory.java
index 38c3bbd991..3384626958 100644
--- a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/MonitorFactory.java
+++ b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/MonitorFactory.java
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.sca.monitor;
+
/**
* A factory for validation monitors
*
@@ -26,7 +27,7 @@ package org.apache.tuscany.sca.monitor;
public interface MonitorFactory {
/**
- * Create a new monitor
+ * Create a new monitor.
*
* @return a new monitor
*/
diff --git a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/DefaultMonitorImpl.java b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/MonitorImpl.java
index b98f29d4dd..585e616632 100644
--- a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/DefaultMonitorImpl.java
+++ b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/MonitorImpl.java
@@ -20,11 +20,10 @@
package org.apache.tuscany.sca.monitor.impl;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
+
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.Problem;
import org.apache.tuscany.sca.monitor.Problem.Severity;
@@ -34,8 +33,8 @@ import org.apache.tuscany.sca.monitor.Problem.Severity;
*
* @version $Rev$ $Date$
*/
-public class DefaultMonitorImpl implements Monitor {
- private static final Logger logger = Logger.getLogger(DefaultMonitorImpl.class.getName());
+public class MonitorImpl implements Monitor {
+ private static final Logger logger = Logger.getLogger(MonitorImpl.class.getName());
// Cache all the problem reported to monitor for further analysis
private List<Problem> problemCache = new ArrayList<Problem>();
@@ -77,26 +76,17 @@ public class DefaultMonitorImpl implements Monitor {
}
public Problem getLastLoggedProblem(){
+ if (problemCache.isEmpty()) {
+ return null;
+ }
return problemCache.get(problemCache.size() - 1);
}
- public boolean isMessageLogged(String messageId) {
- for (Problem problem : problemCache){
- if (problem.getMessageId().equals(messageId)){
- return true;
- }
- }
-
- return false;
+ public Problem createProblem(String sourceClassName, String bundleName, Severity severity, Object problemObject, String messageId, Exception cause) {
+ return new ProblemImpl(sourceClassName, bundleName, severity, problemObject, messageId, cause);
}
- public Problem getProblem(String messageId) {
- for (Problem problem : problemCache){
- if (problem.getMessageId().equals(messageId)){
- return problem;
- }
- }
-
- return null;
+ public Problem createProblem(String sourceClassName, String bundleName, Severity severity, Object problemObject, String messageId, Object... messageParams) {
+ return new ProblemImpl(sourceClassName, bundleName, severity, problemObject, messageId, messageParams);
}
}
diff --git a/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/ProblemImpl.java b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/ProblemImpl.java
new file mode 100644
index 0000000000..5a0aaeddd0
--- /dev/null
+++ b/branches/sca-equinox/modules/monitor/src/main/java/org/apache/tuscany/sca/monitor/impl/ProblemImpl.java
@@ -0,0 +1,132 @@
+/*
+ * 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.tuscany.sca.monitor.impl;
+
+import java.util.logging.Formatter;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
+
+import org.apache.tuscany.sca.monitor.Problem;
+
+/**
+ * Reports a composite assembly problem.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ProblemImpl implements Problem {
+
+ private String sourceClassName;
+ private String bundleName;
+ private Severity severity;
+ private Object problemObject;
+ private String messageId;
+ private Object[] messageParams;
+ private Exception cause;
+
+ /**
+ * Construct a new problem
+ *
+ * @param sourceClassName the class name reporting the problem
+ * @param bundleName the name of the message bundle to use
+ * @param severity the severity of the problem
+ * @param problemObject the model object for which the problem is being reported
+ * @param messageId the id of the problem message
+ * @param messageParams the parameters of the problem message
+ */
+ public ProblemImpl(String sourceClassName, String bundleName, Severity severity, Object problemObject, String messageId, Object... messageParams ) {
+ this.sourceClassName = sourceClassName;
+ this.bundleName = bundleName;
+ this.severity = severity;
+ this.problemObject = problemObject;
+ this.messageId = messageId;
+ this.messageParams = messageParams;
+ }
+
+ /**
+ * Construct a new problem
+ *
+ * @param sourceClassName the class name reporting the problem
+ * @param bundleName the name of the message bundle to use
+ * @param severity the severity of the problem
+ * @param problemObject the model object for which the problem is being reported
+ * @param messageId the id of the problem message
+ * @param cause the exception which caused the problem
+ */
+ public ProblemImpl(String sourceClassName, String bundleName, Severity severity, Object problemObject, String messageId, Exception cause) {
+ this.sourceClassName = sourceClassName;
+ this.bundleName = bundleName;
+ this.severity = severity;
+ this.problemObject = problemObject;
+ this.messageId = messageId;
+ this.cause = cause;
+ }
+
+ public String getSourceClassName() {
+ return sourceClassName;
+ }
+
+ public String getBundleName() {
+ return bundleName;
+ }
+
+ public Severity getSeverity() {
+ return severity;
+ }
+
+ public Object getProblemObject() {
+ return problemObject;
+ }
+
+ public String getMessageId() {
+ return messageId;
+ }
+
+ public Object[] getMessageParams() {
+ return messageParams;
+ }
+
+ public Exception getCause() {
+ return cause;
+ }
+
+ @Override
+ public String toString() {
+ Logger logger = Logger.getLogger(sourceClassName, bundleName);
+
+ LogRecord record = new LogRecord(Level.INFO, messageId);
+
+ if (cause == null){
+ record.setParameters(messageParams);
+
+ } else {
+ Object[] params = new String[1];
+ params[0] = cause.toString();
+ record.setParameters(params);
+ }
+ record.setResourceBundle(logger.getResourceBundle());
+ record.setSourceClassName(sourceClassName);
+
+ Formatter formatter = new SimpleFormatter();
+
+ return formatter.formatMessage(record);
+ }
+}
diff --git a/branches/sca-equinox/modules/monitor/src/test/java/org/apache/tuscany/sca/monitor/MonitorTestCase.java b/branches/sca-equinox/modules/monitor/src/test/java/org/apache/tuscany/sca/monitor/MonitorTestCase.java
new file mode 100644
index 0000000000..4380e32f99
--- /dev/null
+++ b/branches/sca-equinox/modules/monitor/src/test/java/org/apache/tuscany/sca/monitor/MonitorTestCase.java
@@ -0,0 +1,92 @@
+/*
+ * 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.tuscany.sca.monitor;
+
+import org.apache.tuscany.sca.monitor.Problem.Severity;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Loads a monitor and adds some problems to it.
+ *
+ * @version $Rev$ $Date$
+ */
+public class MonitorTestCase {
+
+ private static MonitorFactory monitorFactory;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ monitorFactory = new DefaultMonitorFactory();
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ monitorFactory = null;
+ }
+
+ @Test
+ public void testCreateProblem() throws Exception {
+ String dummyModelObject = "DUMMY MODEL OBJECT";
+
+ Monitor monitor = monitorFactory.createMonitor();
+
+ Problem problem = null;
+
+ problem = monitor.createProblem(this.getClass().getName(),
+ "tuscany-monitor-test-messages",
+ Severity.WARNING,
+ dummyModelObject,
+ "MESSAGE1" );
+ monitor.problem(problem);
+
+ String param = "Some Parameter";
+
+ problem = monitor.createProblem(this.getClass().getName(),
+ "tuscany-monitor-test-messages",
+ Severity.WARNING,
+ dummyModelObject,
+ "MESSAGE2",
+ param);
+ monitor.problem(problem);
+
+ problem = monitor.createProblem(this.getClass().getName(),
+ "tuscany-monitor-test-messages",
+ Severity.WARNING,
+ dummyModelObject,
+ "MESSAGE3",
+ 8,
+ 9,
+ 4);
+ monitor.problem(problem);
+
+ Exception ex = new IllegalStateException("TEST_MESSAGE");
+
+ problem = monitor.createProblem(this.getClass().getName(),
+ "tuscany-monitor-test-messages",
+ Severity.ERROR,
+ dummyModelObject,
+ "MESSAGE4",
+ ex);
+ monitor.problem(problem);
+
+ }
+}
diff --git a/branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages.properties b/branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages.properties
new file mode 100644
index 0000000000..523263da40
--- /dev/null
+++ b/branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages.properties
@@ -0,0 +1,24 @@
+#
+#
+# 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.
+#
+#
+MESSAGE1 = This is a test message with no params
+MESSAGE2 = This is a test message with a string param {0}
+MESSAGE3 = This is a test message with numbers {0}, {1}, {2}
+MESSAGE4 = This is a test message with exception
diff --git a/branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages_it.properties b/branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages_it.properties
new file mode 100644
index 0000000000..523263da40
--- /dev/null
+++ b/branches/sca-equinox/modules/monitor/src/test/resources/tuscany-monitor-test-messages_it.properties
@@ -0,0 +1,24 @@
+#
+#
+# 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.
+#
+#
+MESSAGE1 = This is a test message with no params
+MESSAGE2 = This is a test message with a string param {0}
+MESSAGE3 = This is a test message with numbers {0}, {1}, {2}
+MESSAGE4 = This is a test message with exception