I tried this approach but I am getting the following exception. My code is below the exception as well. How with this code know which host to pull the variables from? I need the servlet to pull a host variable for each host I have when they submit to the servlet.
[26/12/12 10:01:37:615 MST] INFO servlet.AmazonMailerServlet: Composing email
[26/12/12 10:01:37:649 MST] ERROR servlet.AmazonMailerServlet: Error sending message. com.dotmarketing.exception.DotSecurityException: User doesn't have permission to read the host variables
com.dotmarketing.exception.DotSecurityException: User doesn't have permission to read the host variables
at com.dotmarketing.portlets.hostvariable.bussiness.HostVariableAPIImpl.getVariablesForHost(HostVariableAPIImpl.java:66)
at com.mindfreez.plugins.amazonmailer.servlet.AmazonMailerServlet.service(AmazonMailerServlet.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.dotmarketing.filters.CMSFilter.doFilter(CMSFilter.java:128)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.dotmarketing.filters.AutoLoginFilter.doFilter(AutoLoginFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.dotmarketing.cms.urlmap.filters.URLMapFilter.doFilter(URLMapFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.dotmarketing.filters.TimeMachineFilter.doFilter(TimeMachineFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.dotmarketing.filters.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:140)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:465)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
Here is the code I am using to pull the host variables.
// User to check in as
User user = APILocator.getUserAPI().getSystemUser();
// respect CMS Anonymous permissions
boolean respectFrontendRoles = false;
// Host on which to place the content
Host host = APILocator.getHostAPI().findDefaultHost(user, respectFrontendRoles);
final List<HostVariable> variablesForHost = APILocator.getHostVariableAPI().getVariablesForHost(host.getInode(), user, respectFrontendRoles);
String to = null;
for (HostVariable hostVariable : variablesForHost) {
if (hostVariable.getKey().equalsIgnoreCase("contactEmail")) {
to = hostVariable.getValue();
}
}