Hello,
I know it is already possible to define camel endpoint MLLP. But I think a camel-mllp component would be welcome. I therefore propose to add it. this would avoid having to add each time the same code to set the codec. I have in my project numerous endpoint mllp and I noticed that the developpers diverge more or less on how to go about it. the code: from ("mllp://host:8808") is easy to implement and does not cause confusion. So I defined a camel-mllp componet which extends camel-mina. this component does is create a codec mllp and delegates the rest of the work to Mina. it is simple to implement. I therefore propose to bring this component (or the idea of such a component) in the incubator. the component being reduced to a single class I think the camel maintenace code will not be more complicated. http://camel.465427.n5.nabble.com/file/n5711304/camel-mllp.zip camel-mllp.zip /** * 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.camel.component.mllp; import java.util.Map; import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.component.hl7.HL7MLLPCodec; import org.apache.camel.component.mina.MinaComponent; import org.apache.camel.component.mina.MinaConfiguration; /** * Component for Apache MLLP. * Camel MLLP extends Camel Mina. * It accept all mina options. except the codec option. * Camel-MLLP always uses the codec HL7MLLPCodec. * If the codec option is present, an IllegalArgumentException is thrown. * usage: * from ("mllp://localhost:8889?encoding=ISO-8859-1") * * @version */ public class MLLPComponent extends MinaComponent { /** * MLLP_DEFAULT_CHARSET default encodingt: UTF-8 */ public static final String MLLP_DEFAULT_CHARSET = "UTF-8"; /** * MLLP_CHARSET encoding option name. */ public static final String MLLP_CHARSET = "encoding"; /** * MINA_CODEC mina codec option name. */ public static final String MINA_CODEC = "codec"; /** * MLLP_DEFAULT_SYNC default exchange pattern: true */ public static final boolean MLLP_DEFAULT_SYNC = true; /** * MLLP_SYNC exchange pattern Option name */ public static final String MLLP_SYNC = "sync"; public MLLPComponent(){ super(); } public MLLPComponent(final CamelContext context){ super(context); } /** * A factory method allowing derived components to create a new mina endpoint * from the given URI, remaining path and optional parameters * * @param uri the full URI of the endpoint * @param remaining the remaining part of the URI without the query * parameters or component prefix * @param parameters the optional parameters passed in * @return a newly created mina endpoint or null if the endpoint cannot be * created based on the inputs */ @Override protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception{ String charSet = MLLP_DEFAULT_CHARSET; //set config properties if(parameters.containsKey(MLLP_CHARSET)){ charSet = (String) parameters.get(MLLP_CHARSET); parameters.remove(MLLP_CHARSET); } if(!parameters.containsKey(MLLP_SYNC)){ parameters.put(MLLP_SYNC, MLLP_DEFAULT_SYNC); } if(parameters.containsKey(MINA_CODEC)){ throw new IllegalArgumentException("Unrecognised MLLP " + MINA_CODEC + ": the " + MINA_CODEC + " option is not supported"); } //define config with codec. this.setConfiguration(getDefaultConfig(charSet)); //call mina ceateEndPoint for TCP socket. return super.createEndpoint(uri, "tcp://" + remaining, parameters); } /** * Create new mina configuration * Create a new mina configuration that contains a new instance of HL7MLLPCodec set with charSet * @param charSet encoding for HL7MLLPCodec * @return a newly created mina configuration */ private MinaConfiguration getDefaultConfig(String charSet){ final MinaConfiguration config = new MinaConfiguration(); final HL7MLLPCodec mllp = new HL7MLLPCodec(); mllp.setCharset(charSet); config.setCodec(mllp); return config; } } A+JYT PS: I'm Running camel 2.8.0 sandalone and 2.8.0 in fuse -- View this message in context: http://camel.465427.n5.nabble.com/Suggest-Add-a-camel-mllp-component-into-the-incubator-tp5711304.html Sent from the Camel - Users mailing list archive at Nabble.com.