Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 781E0DFB4 for ; Sat, 27 Oct 2012 04:00:00 +0000 (UTC) Received: (qmail 56214 invoked by uid 500); 27 Oct 2012 03:59:59 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 56101 invoked by uid 500); 27 Oct 2012 03:59:57 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 56072 invoked by uid 99); 27 Oct 2012 03:59:56 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 27 Oct 2012 03:59:56 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 27 Oct 2012 03:59:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id BE03D2388993; Sat, 27 Oct 2012 03:59:11 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1402738 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/properties/PropertiesComponent.java test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java Date: Sat, 27 Oct 2012 03:59:11 -0000 To: commits@camel.apache.org From: ningjiang@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121027035911.BE03D2388993@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ningjiang Date: Sat Oct 27 03:59:11 2012 New Revision: 1402738 URL: http://svn.apache.org/viewvc?rev=1402738&view=rev Log: CAMEL-5747 clean up the cachedMap when restart the properties component with thanks to Daniel Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java?rev=1402738&r1=1402737&r2=1402738&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java Sat Oct 27 03:59:11 2012 @@ -27,7 +27,6 @@ import org.apache.camel.Endpoint; import org.apache.camel.impl.DefaultComponent; import org.apache.camel.util.LRUSoftCache; import org.apache.camel.util.ObjectHelper; -import org.apache.camel.util.ServiceHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -281,14 +280,8 @@ public class PropertiesComponent extends } @Override - protected void doStart() throws Exception { - ServiceHelper.startService(cacheMap); - super.doStart(); - } - - @Override protected void doStop() throws Exception { - ServiceHelper.stopService(cacheMap); + cacheMap.clear(); super.doStop(); } Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java?rev=1402738&view=auto ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java Sat Oct 27 03:59:11 2012 @@ -0,0 +1,69 @@ +/** + * 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.properties; + +import java.util.Properties; + +import org.apache.camel.CamelContext; +import org.apache.camel.ContextTestSupport; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.impl.SimpleRegistry; + +/** + * @version + */ +public class PropertiesComponentRestartTest extends ContextTestSupport { + + private int resolvedCount; + + public void testPropertiesComponentCacheClearedOnStop() throws Exception { + + context.start(); + + context.resolvePropertyPlaceholders("{{cool.end}}"); + context.resolvePropertyPlaceholders("{{cool.end}}"); + context.resolvePropertyPlaceholders("{{cool.end}}"); + assertEquals(1, resolvedCount); // one cache miss + + context.stop(); + context.start(); + + context.resolvePropertyPlaceholders("{{cool.end}}"); + context.resolvePropertyPlaceholders("{{cool.end}}"); + context.resolvePropertyPlaceholders("{{cool.end}}"); + assertEquals(2, resolvedCount); // one more cache miss -- stop() cleared the cache + } + + @Override + protected CamelContext createCamelContext() throws Exception { + + PropertiesComponent pc = new PropertiesComponent("classpath:org/apache/camel/component/properties/myproperties.properties"); + pc.setPropertiesResolver(new PropertiesResolver() { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, String... uri) throws Exception { + resolvedCount++; + return new DefaultPropertiesResolver().resolveProperties(context, ignoreMissingLocation, uri); + } + }); + + // put the properties component into the registry so that it survives restarts + SimpleRegistry registry = new SimpleRegistry(); + registry.put("properties", pc); + + return new DefaultCamelContext(registry); + } + +}