diff --git a/zanata-war/src/main/java/org/zanata/servlet/HttpParams.java b/zanata-war/src/main/java/org/zanata/servlet/HttpParams.java new file mode 100644 index 0000000000..58589b7007 --- /dev/null +++ b/zanata-war/src/main/java/org/zanata/servlet/HttpParams.java @@ -0,0 +1,45 @@ +/* + * Copyright 2015, Red Hat, Inc. and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.zanata.servlet; + +import javax.enterprise.inject.Produces; +import javax.enterprise.inject.spi.InjectionPoint; +import javax.faces.context.FacesContext; +import javax.servlet.ServletRequest; + +import org.zanata.servlet.annotations.HttpParam; + +/** + * Producer for @HttpParam. Implementation taken from an example in the Weld manual. + * @author Sean Flanigan sflaniga@redhat.com + */ +class HttpParams { + + @Produces + @HttpParam("") + String getParamValue(InjectionPoint ip) { + ServletRequest request = (ServletRequest) FacesContext + .getCurrentInstance().getExternalContext().getRequest(); + String name = ip.getAnnotated().getAnnotation(HttpParam.class).value(); + return request.getParameter(name); + } +} diff --git a/zanata-war/src/main/java/org/zanata/servlet/annotations/HttpParam.java b/zanata-war/src/main/java/org/zanata/servlet/annotations/HttpParam.java new file mode 100644 index 0000000000..85128a2880 --- /dev/null +++ b/zanata-war/src/main/java/org/zanata/servlet/annotations/HttpParam.java @@ -0,0 +1,51 @@ +/* + * Copyright 2015, Red Hat, Inc. and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.zanata.servlet.annotations; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.enterprise.util.Nonbinding; +import javax.inject.Qualifier; + + +/** + * JSF only: This can be used to inject an HTTP parameter by name. + * @author Sean Flanigan sflaniga@redhat.com + */ +@Qualifier +@Retention(RUNTIME) +@Target({ TYPE, METHOD, FIELD, PARAMETER}) +public @interface HttpParam { + /** + * The name of the HTTP parameter to inject. + * @return the parameter name + */ + @Nonbinding + public String value(); +}