/**
* 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 com.perforce.p4camel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.EndpointConfiguration;
import org.apache.camel.TypeConverter;
import org.apache.camel.impl.DefaultComponent;
import org.apache.commons.lang.StringUtils;
/**
* Represents the component that manages {@link P4Endpoint}.
*/
public class P4Component extends DefaultComponent {
protected Endpoint createEndpoint(String uri, String remaining,
Map<String, Object> parameters) throws Exception {
P4Endpoint endpoint = new P4Endpoint(uri, this);
setProperties(endpoint, parameters);
EndpointConfiguration c = endpoint.getEndpointConfiguration();
String host = c.getParameter(EndpointConfiguration.URI_HOST);
endpoint.setHost(host);
String port = c.getParameter(EndpointConfiguration.URI_PORT);
endpoint.setPort(port);
List<String> parts = new ArrayList<>();
parts.addAll(Arrays.asList(c.getURI().getPath().split("/")));
parts.remove(0); // empty due to leading '/'
String typeStr = parts.remove(0);
TypeConverter camel = getCamelContext().getTypeConverter();
P4Type type = camel.convertTo(P4Type.class, typeStr);
endpoint.setType(type);
String pathStr = StringUtils.join(parts.toArray(), "/");
endpoint.setDepotPath("//" + pathStr);
String[] userAuth = c.getURI().getUserInfo().split(":");
endpoint.setUsername(userAuth[0]);
String pass = (userAuth.length > 0) ? userAuth[1] : "";
endpoint.setPassword(pass);
return endpoint;
}
}