001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.camel.reindexing; 019 020import java.net.URL; 021 022import org.apache.camel.Exchange; 023import org.apache.camel.Message; 024import org.apache.camel.Processor; 025import org.fcrepo.camel.FcrepoHeaders; 026 027/** 028 * A processor that converts the body of a message 029 * (which should be a full fedora resource URI) into 030 * the corresponding CamelFcrepoIdentifier value. 031 * 032 * @author Aaron Coburn 033 */ 034public class PathProcessor implements Processor { 035 036 /** 037 * Convert the message body into an appropriate IDENTIFIER value 038 * 039 * @param exchange the current message exchange 040 */ 041 public void process(final Exchange exchange) throws Exception { 042 final Message in = exchange.getIn(); 043 044 final URL fullPath = new URL(in.getBody(String.class)); 045 final String base = in.getHeader(FcrepoHeaders.FCREPO_BASE_URL, String.class); 046 final URL baseUrl = new URL(base.startsWith("http") ? base : "http://" + base); 047 048 in.setHeader(FcrepoHeaders.FCREPO_IDENTIFIER, fullPath.getPath().substring(baseUrl.getPath().length())); 049 050 in.removeHeader("JMSCorrelationID"); 051 } 052}