| /* |
| * 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.felix.http.base.internal.runtime.dto; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.apache.felix.http.base.internal.logger.SystemLogger; |
| import org.apache.felix.http.base.internal.registry.ErrorPageRegistry; |
| import org.apache.felix.http.base.internal.runtime.AbstractInfo; |
| import org.apache.felix.http.base.internal.runtime.FilterInfo; |
| import org.apache.felix.http.base.internal.runtime.ListenerInfo; |
| import org.apache.felix.http.base.internal.runtime.PreprocessorInfo; |
| import org.apache.felix.http.base.internal.runtime.ResourceInfo; |
| import org.apache.felix.http.base.internal.runtime.ServletContextHelperInfo; |
| import org.apache.felix.http.base.internal.runtime.ServletInfo; |
| import org.osgi.service.http.runtime.dto.FailedErrorPageDTO; |
| import org.osgi.service.http.runtime.dto.FailedFilterDTO; |
| import org.osgi.service.http.runtime.dto.FailedListenerDTO; |
| import org.osgi.service.http.runtime.dto.FailedPreprocessorDTO; |
| import org.osgi.service.http.runtime.dto.FailedResourceDTO; |
| import org.osgi.service.http.runtime.dto.FailedServletContextDTO; |
| import org.osgi.service.http.runtime.dto.FailedServletDTO; |
| |
| public final class FailedDTOHolder |
| { |
| |
| public final List<FailedFilterDTO> failedFilterDTOs = new ArrayList<FailedFilterDTO>(); |
| |
| public final List<FailedListenerDTO> failedListenerDTOs = new ArrayList<FailedListenerDTO>(); |
| |
| public final List<FailedServletDTO> failedServletDTOs = new ArrayList<FailedServletDTO>(); |
| |
| public final List<FailedResourceDTO> failedResourceDTOs = new ArrayList<FailedResourceDTO>(); |
| |
| public final List<FailedErrorPageDTO> failedErrorPageDTOs = new ArrayList<FailedErrorPageDTO>(); |
| |
| public final List<FailedServletContextDTO> failedServletContextDTOs = new ArrayList<FailedServletContextDTO>(); |
| |
| public final List<FailedPreprocessorDTO> failedPreprocessorDTOs = new ArrayList<FailedPreprocessorDTO>(); |
| |
| public void add(final AbstractInfo<?> info, final long contextId, final int failureCode) |
| { |
| if (info instanceof ServletContextHelperInfo) |
| { |
| final FailedServletContextDTO dto = (FailedServletContextDTO)ServletContextDTOBuilder.build((ServletContextHelperInfo)info, null, failureCode); |
| this.failedServletContextDTOs.add(dto); |
| } |
| else if (info instanceof ServletInfo ) |
| { |
| boolean isError = false; |
| if ( ((ServletInfo) info).getErrorPage() != null) |
| { |
| isError = true; |
| final FailedErrorPageDTO dto = (FailedErrorPageDTO)ErrorPageDTOBuilder.build((ServletInfo)info, true); |
| dto.failureReason = failureCode; |
| final ErrorPageRegistry.ErrorRegistration reg = ErrorPageRegistry.getErrorRegistration((ServletInfo)info); |
| dto.errorCodes = reg.errorCodes; |
| dto.exceptions = reg.exceptions; |
| dto.servletContextId = contextId; |
| this.failedErrorPageDTOs.add(dto); |
| } |
| |
| if ( ((ServletInfo) info).getPatterns() != null || ((ServletInfo)info).getName() != null || !isError ) |
| { |
| final FailedServletDTO dto = (FailedServletDTO)ServletDTOBuilder.build((ServletInfo) info, failureCode); |
| if ( ((ServletInfo) info).getPatterns() != null ) |
| { |
| dto.patterns = ((ServletInfo) info).getPatterns(); |
| } |
| else |
| { |
| dto.patterns = BuilderConstants.EMPTY_STRING_ARRAY; |
| } |
| dto.name = ((ServletInfo)info).getName(); |
| dto.servletContextId = contextId; |
| this.failedServletDTOs.add(dto); |
| } |
| } |
| else if (info instanceof FilterInfo) |
| { |
| final FailedFilterDTO dto = (FailedFilterDTO)FilterDTOBuilder.build((FilterInfo) info, failureCode); |
| dto.failureReason = failureCode; |
| |
| dto.servletContextId = contextId; |
| this.failedFilterDTOs.add(dto); |
| } |
| else if (info instanceof ResourceInfo) |
| { |
| final FailedResourceDTO dto = (FailedResourceDTO)ResourceDTOBuilder.build((ResourceInfo) info, true); |
| dto.failureReason = failureCode; |
| dto.servletContextId = contextId; |
| this.failedResourceDTOs.add(dto); |
| } |
| else if (info instanceof ListenerInfo) |
| { |
| final FailedListenerDTO dto = (FailedListenerDTO)ListenerDTOBuilder.build((ListenerInfo)info, failureCode); |
| dto.servletContextId = contextId; |
| this.failedListenerDTOs.add(dto); |
| } |
| else if ( info instanceof PreprocessorInfo ) |
| { |
| final FailedPreprocessorDTO dto = (FailedPreprocessorDTO)PreprocessorDTOBuilder.build((PreprocessorInfo) info, failureCode); |
| this.failedPreprocessorDTOs.add(dto); |
| } |
| else |
| { |
| SystemLogger.error("Unsupported info type: " + info.getClass(), null); |
| } |
| } |
| } |
| |