diff options
Diffstat (limited to 'sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java')
-rw-r--r-- | sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java b/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java deleted file mode 100644 index 23b951c88a..0000000000 --- a/sca-java-2.x/tags/2.0-M5.1-RC1/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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.binding.rest.provider; - -import java.io.IOException; -import java.util.Enumeration; - -import javax.servlet.FilterConfig; -import javax.servlet.ServletContext; -import javax.ws.rs.HttpMethod; -import javax.ws.rs.core.MediaType; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.wink.common.internal.registry.ProvidersRegistry; -import org.apache.wink.common.internal.registry.metadata.MethodMetadata; -import org.apache.wink.server.internal.DeploymentConfiguration; -import org.apache.wink.server.internal.RequestProcessor; -import org.apache.wink.server.internal.registry.ResourceRecord; -import org.apache.wink.server.internal.servlet.RestServlet; - -/** - * - */ -public class TuscanyRESTServlet extends RestServlet { - private static final long serialVersionUID = 89997233133964915L; - private ExtensionPointRegistry registry; - private Class<?> resourceClass; - private boolean fixed; - - public TuscanyRESTServlet(ExtensionPointRegistry registry, Class<?> resourceClass) { - super(); - this.registry = registry; - this.resourceClass = resourceClass; - } - - @Override - public DeploymentConfiguration getDeploymentConfiguration() throws ClassNotFoundException, InstantiationException, - IllegalAccessException, IOException { - DeploymentConfiguration config = super.getDeploymentConfiguration(); - - // [rfeng] FIXME: This is a hack to fool Apache wink to not remove the servlet path - config.setFilterConfig(new FilterConfig() { - - public ServletContext getServletContext() { - return getServletContext(); - } - - public Enumeration getInitParameterNames() { - return getInitParameterNames(); - } - - public String getInitParameter(String arg0) { - return getInitParameter(arg0); - } - - public String getFilterName() { - return getServletName(); - } - }); - - ProvidersRegistry providers = config.getProvidersRegistry(); - providers.addProvider(new DataBindingJAXRSReader(registry), 0.001, true); - providers.addProvider(new DataBindingJAXRSWriter(registry), 0.001, true); - - return config; - } - - private synchronized void fixMediaTypes(DeploymentConfiguration config) { - if (fixed) { - return; - } - // FIXME: A hacky workaround for https://issues.apache.org/jira/browse/TUSCANY-3572 - ResourceRecord record = config.getResourceRegistry().getRecord(resourceClass); - - for (MethodMetadata methodMetadata : record.getMetadata().getResourceMethods()) { - String method = methodMetadata.getHttpMethod(); - if (HttpMethod.GET.equals(method) || HttpMethod.HEAD.equals(method) || HttpMethod.DELETE.equals(method)) { - methodMetadata.addConsumes(MediaType.APPLICATION_OCTET_STREAM_TYPE); - methodMetadata.addConsumes(MediaType.WILDCARD_TYPE); - } - if (HttpMethod.HEAD.equals(method) || HttpMethod.DELETE.equals(method)) { - methodMetadata.addProduces(MediaType.APPLICATION_OCTET_STREAM_TYPE); - methodMetadata.addConsumes(MediaType.WILDCARD_TYPE); - } - } - for (MethodMetadata methodMetadata : record.getMetadata().getSubResourceMethods()) { - String method = methodMetadata.getHttpMethod(); - if (HttpMethod.GET.equals(method) || HttpMethod.HEAD.equals(method) || HttpMethod.DELETE.equals(method)) { - methodMetadata.addConsumes(MediaType.APPLICATION_OCTET_STREAM_TYPE); - methodMetadata.addConsumes(MediaType.WILDCARD_TYPE); - } - if (HttpMethod.HEAD.equals(method) || HttpMethod.DELETE.equals(method)) { - methodMetadata.addProduces(MediaType.APPLICATION_OCTET_STREAM_TYPE); - methodMetadata.addConsumes(MediaType.WILDCARD_TYPE); - } - } - fixed = true; - } - - @Override - public RequestProcessor getRequestProcessor() { - RequestProcessor processor = super.getRequestProcessor(); - // The 1st call returns null - if (processor != null) { - fixMediaTypes(processor.getConfiguration()); - } - return processor; - } - -} |