001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.camel.management.mbean; 018 019import org.apache.camel.CamelContext; 020import org.apache.camel.api.management.ManagedResource; 021import org.apache.camel.api.management.mbean.ManagedStreamCachingStrategyMBean; 022import org.apache.camel.spi.StreamCachingStrategy; 023 024@ManagedResource(description = "Managed StreamCachingStrategy") 025public class ManagedStreamCachingStrategy extends ManagedService implements ManagedStreamCachingStrategyMBean { 026 027 private final CamelContext camelContext; 028 private final StreamCachingStrategy streamCachingStrategy; 029 private final String[] allowClasses; 030 private final String[] denyClasses; 031 032 public ManagedStreamCachingStrategy(CamelContext camelContext, StreamCachingStrategy streamCachingStrategy) { 033 super(camelContext, streamCachingStrategy); 034 this.camelContext = camelContext; 035 this.streamCachingStrategy = streamCachingStrategy; 036 if (streamCachingStrategy.getAllowClasses() != null) { 037 this.allowClasses = streamCachingStrategy.getAllowClasses() 038 .stream().map(Class::getName) 039 .toArray(String[]::new); 040 } else { 041 this.allowClasses = null; 042 } 043 if (streamCachingStrategy.getDenyClasses() != null) { 044 this.denyClasses = streamCachingStrategy.getDenyClasses() 045 .stream().map(Class::getName) 046 .toArray(String[]::new); 047 } else { 048 this.denyClasses = null; 049 } 050 } 051 052 public CamelContext getCamelContext() { 053 return camelContext; 054 } 055 056 public StreamCachingStrategy getStreamCachingStrategy() { 057 return streamCachingStrategy; 058 } 059 060 @Override 061 public boolean isEnabled() { 062 return streamCachingStrategy.isEnabled(); 063 } 064 065 @Override 066 public String[] getAllowClasses() { 067 return allowClasses; 068 } 069 070 @Override 071 public String[] getDenyClasses() { 072 return denyClasses; 073 } 074 075 @Override 076 public boolean isSpoolEnabled() { 077 return streamCachingStrategy.isSpoolEnabled(); 078 } 079 080 @Override 081 public String getSpoolDirectory() { 082 if (streamCachingStrategy.getSpoolDirectory() != null) { 083 return streamCachingStrategy.getSpoolDirectory().getPath(); 084 } else { 085 return null; 086 } 087 } 088 089 @Override 090 public String getSpoolCipher() { 091 return streamCachingStrategy.getSpoolCipher(); 092 } 093 094 @Override 095 public void setSpoolThreshold(long threshold) { 096 streamCachingStrategy.setSpoolThreshold(threshold); 097 } 098 099 @Override 100 public long getSpoolThreshold() { 101 return streamCachingStrategy.getSpoolThreshold(); 102 } 103 104 @Override 105 public void setSpoolUsedHeapMemoryThreshold(int percentage) { 106 streamCachingStrategy.setSpoolUsedHeapMemoryThreshold(percentage); 107 } 108 109 @Override 110 public int getSpoolUsedHeapMemoryThreshold() { 111 return streamCachingStrategy.getSpoolUsedHeapMemoryThreshold(); 112 } 113 114 @Override 115 public void setSpoolUsedHeapMemoryLimit(SpoolUsedHeapMemoryLimit limit) { 116 StreamCachingStrategy.SpoolUsedHeapMemoryLimit l; 117 if (limit == null) { 118 l = null; 119 } else { 120 l = switch (limit) { 121 case Committed -> StreamCachingStrategy.SpoolUsedHeapMemoryLimit.Committed; 122 case Max -> StreamCachingStrategy.SpoolUsedHeapMemoryLimit.Max; 123 }; 124 } 125 streamCachingStrategy.setSpoolUsedHeapMemoryLimit(l); 126 } 127 128 @Override 129 public SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit() { 130 StreamCachingStrategy.SpoolUsedHeapMemoryLimit l = streamCachingStrategy.getSpoolUsedHeapMemoryLimit(); 131 if (l == null) { 132 return null; 133 } else { 134 return switch (l) { 135 case Committed -> SpoolUsedHeapMemoryLimit.Committed; 136 case Max -> SpoolUsedHeapMemoryLimit.Max; 137 }; 138 } 139 } 140 141 @Override 142 public void setBufferSize(int bufferSize) { 143 streamCachingStrategy.setBufferSize(bufferSize); 144 } 145 146 @Override 147 public int getBufferSize() { 148 return streamCachingStrategy.getBufferSize(); 149 } 150 151 @Override 152 public void setRemoveSpoolDirectoryWhenStopping(boolean remove) { 153 streamCachingStrategy.setRemoveSpoolDirectoryWhenStopping(remove); 154 } 155 156 @Override 157 public boolean isRemoveSpoolDirectoryWhenStopping() { 158 return streamCachingStrategy.isRemoveSpoolDirectoryWhenStopping(); 159 } 160 161 @Override 162 public void setAnySpoolRules(boolean any) { 163 streamCachingStrategy.setAnySpoolRules(any); 164 } 165 166 @Override 167 public boolean isAnySpoolRules() { 168 return streamCachingStrategy.isAnySpoolRules(); 169 } 170 171 @Override 172 public long getCacheMemoryCounter() { 173 return streamCachingStrategy.getStatistics().getCacheMemoryCounter(); 174 } 175 176 @Override 177 public long getCacheMemorySize() { 178 return streamCachingStrategy.getStatistics().getCacheMemorySize(); 179 } 180 181 @Override 182 public long getCacheMemoryAverageSize() { 183 return streamCachingStrategy.getStatistics().getCacheMemoryAverageSize(); 184 } 185 186 @Override 187 public long getCacheSpoolCounter() { 188 return streamCachingStrategy.getStatistics().getCacheSpoolCounter(); 189 } 190 191 @Override 192 public long getCacheSpoolSize() { 193 return streamCachingStrategy.getStatistics().getCacheSpoolSize(); 194 } 195 196 @Override 197 public long getCacheSpoolAverageSize() { 198 return streamCachingStrategy.getStatistics().getCacheSpoolAverageSize(); 199 } 200 201 @Override 202 public boolean isStatisticsEnabled() { 203 return streamCachingStrategy.getStatistics().isStatisticsEnabled(); 204 } 205 206 @Override 207 public void setStatisticsEnabled(boolean enabled) { 208 streamCachingStrategy.getStatistics().setStatisticsEnabled(enabled); 209 } 210 211 @Override 212 public void resetStatistics() { 213 streamCachingStrategy.getStatistics().reset(); 214 } 215 216}