You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/04/18 12:49:30 UTC
svn commit: r161752 - in lenya/trunk/src/java/org/apache/lenya:
cms/usecase/UsecaseInvoker.java cms/usecase/UsecaseInvokerImpl.java
cms/usecase/scheduling/UsecaseCronJob.java lenya.roles
Author: andreas
Date: Mon Apr 18 03:49:27 2005
New Revision: 161752
URL: http://svn.apache.org/viewcvs?view=rev&rev=161752
Log:
added UsecaseInvoker
Added:
lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvoker.java
lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvokerImpl.java
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/usecase/scheduling/UsecaseCronJob.java
lenya/trunk/src/java/org/apache/lenya/lenya.roles
Added: lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvoker.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvoker.java?view=auto&rev=161752
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvoker.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvoker.java Mon Apr 18 03:49:27 2005
@@ -0,0 +1,42 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * 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.apache.lenya.cms.usecase;
+
+import java.util.Map;
+
+/**
+ * Invoke a usecase.
+ *
+ * @version $Id:$
+ */
+public interface UsecaseInvoker {
+
+ /**
+ * The Avalon role.
+ */
+ String ROLE = UsecaseInvoker.class.getName();
+
+ /**
+ * Invokes a usecase.
+ * @param webappUrl The URL to invoke the usecase on.
+ * @param usecaseName The name of the usecase.
+ * @param parameters The parameters.
+ * @throws UsecaseException if an error occurs.
+ */
+ void invoke(String webappUrl, String usecaseName, Map parameters) throws UsecaseException;
+
+}
\ No newline at end of file
Added: lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvokerImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvokerImpl.java?view=auto&rev=161752
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvokerImpl.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseInvokerImpl.java Mon Apr 18 03:49:27 2005
@@ -0,0 +1,118 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * 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.apache.lenya.cms.usecase;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+/**
+ * Usecase invoker implementation.
+ *
+ * @version $Id:$
+ */
+public class UsecaseInvokerImpl extends AbstractLogEnabled implements UsecaseInvoker, Serviceable {
+
+ /**
+ * @see org.apache.lenya.cms.usecase.UsecaseInvoker#invoke(java.lang.String, java.lang.String, java.util.Map)
+ */
+ public void invoke(String webappUrl, String usecaseName, Map parameters) throws UsecaseException {
+ UsecaseResolver resolver = null;
+ Usecase usecase = null;
+ try {
+
+ resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
+ usecase = resolver.resolve(webappUrl, usecaseName);
+
+ usecase.setSourceURL(webappUrl);
+ usecase.setName(usecaseName);
+
+ passParameters(usecase, parameters);
+
+ usecase.checkPreconditions();
+ List errorMessages = usecase.getErrorMessages();
+ if (!errorMessages.isEmpty()) {
+ logErrorMessages(usecaseName, "Pre condition messages:", errorMessages);
+ } else {
+ usecase.lockInvolvedObjects();
+ usecase.checkExecutionConditions();
+ errorMessages = usecase.getErrorMessages();
+ if (!errorMessages.isEmpty()) {
+ logErrorMessages(usecaseName, "Execution condition messages:", errorMessages);
+ } else {
+ usecase.execute();
+ logErrorMessages(usecaseName, "Execution messages:", usecase.getErrorMessages());
+ usecase.checkPostconditions();
+ logErrorMessages(usecaseName, "Post condition messages:", usecase.getErrorMessages());
+ }
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (resolver != null) {
+ if (usecase != null) {
+ try {
+ resolver.release(usecase);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ this.manager.release(resolver);
+ }
+ }
+ }
+
+ /**
+ * @param usecase The usecase to pass the parameters to.
+ * @param parameters The parameters.
+ */
+ protected void passParameters(Usecase usecase, Map parameters) {
+ for (Iterator i = parameters.keySet().iterator(); i.hasNext();) {
+ String key = (String) i.next();
+ Object value = parameters.get(key);
+ usecase.setParameter(key, value);
+ }
+ }
+
+ /**
+ * @param usecaseName The name of the usecase.
+ * @param headline The headline of the messages.
+ * @param errorMessages The messages to log.
+ */
+ protected void logErrorMessages(String usecaseName, String headline, List errorMessages) {
+ getLogger().error("Usecase [" + usecaseName + "] - " + headline);
+ for (Iterator i = errorMessages.iterator(); i.hasNext();) {
+ getLogger().error((String) i.next());
+ }
+ }
+
+ private ServiceManager manager;
+
+ /**
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
+
+}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/scheduling/UsecaseCronJob.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/scheduling/UsecaseCronJob.java?view=diff&r1=161751&r2=161752
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/scheduling/UsecaseCronJob.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/scheduling/UsecaseCronJob.java Mon Apr 18 03:49:27 2005
@@ -48,7 +48,7 @@
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.impl.DefaultAccessController;
import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
+import org.apache.lenya.cms.usecase.UsecaseInvoker;
/**
* Job to schedule usecase execution.
@@ -98,52 +98,19 @@
* @see org.apache.cocoon.components.cron.CronJob#execute(java.lang.String)
*/
public void execute(String jobname) {
- UsecaseResolver resolver = null;
- Usecase usecase = null;
+ UsecaseInvoker invoker = null;
try {
-
setupOriginalRequest();
-
authorizeRequest();
- resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
- usecase = resolver.resolve(getSourceURL(), getUsecaseName());
-
- usecase.setSourceURL(getSourceURL());
- usecase.setName(getUsecaseName());
-
- passParameters(usecase);
-
- usecase.checkPreconditions();
- List errorMessages = usecase.getErrorMessages();
- if (!errorMessages.isEmpty()) {
- logErrorMessages("Pre condition messages:", errorMessages);
- } else {
- usecase.lockInvolvedObjects();
- usecase.checkExecutionConditions();
- errorMessages = usecase.getErrorMessages();
- if (!errorMessages.isEmpty()) {
- logErrorMessages("Execution condition messages:", errorMessages);
- } else {
- usecase.execute();
- logErrorMessages("Execution messages:", usecase.getErrorMessages());
- usecase.checkPostconditions();
- logErrorMessages("Post condition messages:", usecase.getErrorMessages());
- }
- }
+ invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
+ invoker.invoke(getSourceURL(), getUsecaseName(), getParameters());
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
- if (resolver != null) {
- if (usecase != null) {
- try {
- resolver.release(usecase);
- } catch (ServiceException e) {
- throw new RuntimeException(e);
- }
- }
- this.manager.release(resolver);
+ if (invoker != null) {
+ this.manager.release(invoker);
}
}
}
@@ -234,29 +201,6 @@
}
}
- }
-
- /**
- * @param headline The headline of the messages.
- * @param errorMessages The messages to log.
- */
- protected void logErrorMessages(String headline, List errorMessages) {
- getLogger().error("Usecase [" + getUsecaseName() + "] - " + headline);
- for (Iterator i = errorMessages.iterator(); i.hasNext();) {
- getLogger().error((String) i.next());
- }
- }
-
- /**
- * @param usecase The usecase to pass the parameters to.
- */
- protected void passParameters(Usecase usecase) {
- Map parameters = getParameters();
- for (Iterator i = parameters.keySet().iterator(); i.hasNext();) {
- String key = (String) i.next();
- Object value = parameters.get(key);
- usecase.setParameter(key, value);
- }
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/lenya.roles
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/lenya.roles?view=diff&r1=161751&r2=161752
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/lenya.roles (original)
+++ lenya/trunk/src/java/org/apache/lenya/lenya.roles Mon Apr 18 03:49:27 2005
@@ -86,6 +86,10 @@
shorthand="usecases"
default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+ <role name="org.apache.lenya.cms.usecase.UsecaseInvoker"
+ shorthand="usecase-invoker"
+ default-class="org.apache.lenya.cms.usecase.UsecaseInvokerImpl"/>
+
<role name="org.apache.lenya.cms.usecase.UsecaseResolver"
shorthand="usecase-resolver"
default-class="org.apache.lenya.cms.usecase.UsecaseResolverImpl"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org