summaryrefslogtreecommitdiff
path: root/java/broker
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2007-04-24 09:01:58 +0000
committerMartin Ritchie <ritchiem@apache.org>2007-04-24 09:01:58 +0000
commitd026ee76c093fe93afe15053d099e6ecc68a64ff (patch)
tree680eb55a44c95e76b9c51240c33b69641ad6de08 /java/broker
parent53605c52439daacf4a0d96a6bf4e9c95a7425b76 (diff)
downloadqpid-python-d026ee76c093fe93afe15053d099e6ecc68a64ff.tar.gz
Merged revisions 1-447993,447995-448007,448009-448141,448143-448157,448161-448194,448196-448210,448212-448218,448220-448223,448225-448233,448235,448237-448241,448243-448596,448598-448623,448625-448850,448852-448880,448882-448982,448984-449635,449637-449639,449641-449642,449644-449645,449647-449674,449676-449719,449721-449749,449751-449762,449764-449933,449935-449941,449943-450383,450385,450387-450400,450402-450433,450435-450503,450505-450555,450557-450860,450862-451024,451026-451149,451151-451316,451318-451931,451933-452139,452141-452162,452164-452320,452322,452324-452325,452327-452333,452335-452429,452431-452528,452530-452545,452547-453192,453194-453195,453197-453536,453538,453540-453656,453658-454676,454678-454735,454737,454739-454781,454783-462728,462730-462819,462821-462833,462835-462839,462841-463071,463073-463178,463180-463308,463310-463362,463364-463375,463377-463396,463398-463402,463404-463409,463411-463661,463663-463670,463672-463673,463675-464493,464495-464502,464504-464576,464578-464613,464615-464628,464630,464632-464866,464868-464899,464901-464942,464944-464949,464951-465004,465006-465016,465018-465053,465055-465165,465167-465321,465323-465406,465408-465427,465429-465431,465433-465548,465550-466044,466047-466075,466077,466079-466081,466083-466099,466101-466112,466114-466126,466128-466240,466242-466971,466973-466978,466980-467309,467311-467312,467316-467328,467330-467485,467487-467588,467590-467604,467606-467699,467701-467706,467708-467749,467751-468069,468071-468537,468539-469241,469244-469246,469248-469318,469320-469421,469423,469425-469429,469431-469435,469437-469462,469464-469469,469472-469477,469479-469490,469492-469503,469505-469529,469531-469598,469600-469624,469626-469737,469739-469752,469754-469806,469808-469928,469930-469953,469955-470011,470013-470109,470111-470335,470338-470339,470341-470379,470381,470383-470399,470401-470446,470448-470741,470743-470758,470760-470809,470811-470817,470819-470993,470995-471001,471003-471788,471790-471792,471794-472028,472030-472032,472034-472036,472038,472040,472043,472045-472059,472061,472063,472065-472066,472068,472070-472072,472074-472080,472082,472084-472092,472094-472107,472109-472123,472125-472158,472160-472165,472167-472172,472174-472457,472459-472460,472462-472464,472466-472470,472472-472483,472486-472491,472493-472494,472496-472497,472499,472501-472503,472505-472512,472514-472544,472546-472556,472558-472560,472562-472572,472574-472587,472589-472591,472593-472605,472607,472609-472731,472733-472786,472788-472843,472845-472849,472851-472859,472861-472878,472880-472903,472905,472907-472988,472990-472991,472993-473071,473073-473086,473088-473090,473093,473095-473096,473098-473106,473108-473110,473112-473185,473187-473260,473262,473268-473270,473275-473279,473281,473284-473287,473289-473295,473297-473306,473308-473330,473332-473335,473337,473339-473344,473346-473351,473353-473355,473357-473358,473361-473471,473473-473497,473499-473535,473537-473567,473569-473888,473890-474451,474454-474492,474494-474563,474565-474843,474845-474865,474867-474932,474934-475035,475037-475144,475146-475180,475182-475265,475267-475285,475287,475289-475293,475295-475296,475298-475302,475304-475631,475633-475649,475651-475748,475750-475752,475754-476107,476109-476302,476304-476413,476415-476430,476432-476700,476702-476868,476870-477147,477149-477213,477215-477263,477265-477340,477342-477635,477637-477789,477791-477825,477827-477841,477843,477846-477852,477854,477856,477858-477865,477867-477894,477896-478022,478024-478182,478184-478211,478213-478233,478235-478236,478238-478241,478243-478252,478254-478259,478261-478263,478265,478267-478269,478271-478286,478288-478342,478344-478379,478381-478412,478414-478443,478445-478636,478639-478658,478660-478821,478823-478853,478855-478922,478924-478962,478965-478974,478976-479029,479031-479049,479051-479210,479212-479214,479216-479407,479409-479415,479417-479425,479427-479559,479561-479639,479641-479676,479678-479685,479687-480030,480033-480086,480091-480093,480095-480118,480120-480139,480141,480143-480148,480150-480156,480158-480163,480165-480177,480179-480189,480191-480193,480195-480198,480200-480220,480222-480282,480284-480292,480294-480308,480310-480317,480320-480422,480424,480426-480581,480583-480656,480658-480692,480695-480702,480704,480706-480710,480712-480910,480913-480933,480935-480945,480947-480972,480974-480993,480995-481034,481036-481158,481161-481174,481176-481220,481222-481234,481236-481260,481263-481264,481266-481296,481298-481304,481306-481311,481313-481332,481334,481336-481380,481382-481441,481443-482144,482146-482180,482182-482193,482195-482232,482234-482236,482239,482241-482242,482244-482247,482250-482251,482253,482256-482261,482264-482288,482290-482364,482366,482368,482370-482554,482556,482558-482569,482572-482636,482638,482640-482696,482698-482722,482724-482732,482734-482771,482774-482957,482959-483045,483047-483105,483108,483110-483115,483117,483119-483127,483130-483134,483136-483148,483150-483158,483160-483164,483166-483178,483180-483391,483393-483400,483402-483403,483405-483418,483420-483421,483425-483436,483438-483470,483472-483502,483504-483558,483560-483599,483601-483637,483639-483644,483646-483659,483661-483670,483672-483878,483880-483910,483912-483915,483917-483940,483942,483944-483968,483970-483972,483974-483976,483978,483980-484612,484614-484657,484659-484693,484695-484718,484720-484842,484844-484847,484849-484986,484988-485019,485021-485489,485491-485544,485546-485591,485593,485595-485697,485699-485729,485731-485734,485736-485779,485781-485787,485789-485851,485853,485855-486007,486009,486011-486020,486022-486083,486085-486097,486099-486117,486120-486131,486133-486148,486150-486161,486163-486164,486166-486197,486199-486205,486208-486247,486249-486253,486256-486427,486429-486431,486433-486554,486556-486573,486575-486593,486595,486597-486609,486611-486619,486622,486625,486627-486641,486643-486645,486649-486687,486689-486721,486723-486730,486732-486746,486748-486759,486761,486763-486777,486779-486782,486784-486788,486790,486792,486794-486796,486798-487175,487178,487180-487213,487215,487217-487267,487269-487284,487286-487298,487300-487358,487360-487367,487369-487382,487384-487434,487436-487480,487482-487547,487549-487561,487563-487565,487567-487578,487580-487615,487617-487622,487624,487626,487628,487630-487635,487637-487703,487705-487777,487780-487781,487783-487800,487802-487803,487805-487820,487822-487848,487850-487902,487904-488103,488105-488133,488135-488158,488160-488163,488165-488187,488189-488216,488218-488248,488250-488278,488280,488282-488303,488305-488313,488315-488342,488344-488351,488353-488376,488378-488449,488451-488593,488595,488597-488623,488625-488700,488702-488704,488706-488710,488714,488716-488725,488727-488744,488746-488770,488772-488798,488800,488802-488807,488809,488811-488829,488831-488843,488845-488851,488853-489069,489071-489077,489079-489081,489084-489102,489104-489105,489107-489109,489111-489112,489114-489139,489141-489178,489181-489203,489205-489211,489213,489216-489329,489332-489402,489404-489417,489419-489421,489423-489643,489645-489690,489692-489703,489705-489714,489716-489747,489749-489753,489755-489803,489805-489904,489906-490372,490374-490504,490506-490604,490606-490707,490710-490733,490735-490871,490873-490984,490986-491028,491030,491032-491071,491073-491119,491121-491576,491578-491672,491674-491800,491802-491838,491840-491878,491880-492183,492185-492279,492281-492317,492319-492513,492515-492584,492586-492587,492589-492601,492603-492635,492637-492640,492642-492717,492719-492723,492725-492729,492731-492755,492757-492901,492903-492955,492957-492962,492964-492997,492999-493002,493004-493041,493043-493059,493062-493063,493065-493086,493088-493125,493127-493139,493141-493150,493152-493871,493873-494017,494019-494030,494032-494041,494043-494091,494093-494120,494122-494354,494356-494436,494438-494539,494541-494552,494554-494586,494588-494649,494651,494653-494654,494656-494657,494659-494764,494766-494768,494770-494796,494798-494799,494802,494804-494860,494862-494903,494905-494906,494908-495019,495021-495160,495162-495168,495171-495188,495190-495229,495231-495254,495256-495303,495305-495313,495315-495336,495338-495372,495374-495379,495381-495454,495457-495459,495462-495516,495518-495524,495526-495531,495533-495548,495551-495553,495555,495557-495558,495560,495562-495573,495575-495583,495585-495594,495596-495628,495630-495638,495640-495651,495653-495660,495662-495753,495755-496259,496261-496262,496264-496269,496271-496275,496277-496301,496303-496316,496318-496383,496385-496413,496415-496495,496497-496625,496627-496636,496638-496640,496642-496647,496650-496657,496659-496660,496663-496664,496666-496677,496679-496681,496683-496730,496732-496750,496752,496754-496784,496786-496832,496834-496840,496842-496990,496992-496995,496997-497340,497343-497351,497353-497403,497405-497424,497426-497438,497440-497481,497483-497497,497499-497765,497767-497769,497771-497775,497777-497778,497780,497782-497783,497785,497787-497812,497814-497871,497873-497877,497879-498573,498575-498588,498590,498592,498594-498636,498638-498669,498671-498686,498688-498689,498691-498719,498721-498964,498966-498969,498971-498973,498975-498982,498985-499035,499037-499040,499042,499044-499048,499050-499082,499084-499086,499088-499164,499167-499169,499171-499355,499357-499370,499372-499373,499375-499391,499393,499395-499425,499428,499430-499445,499447-499455,499457-499460,499462-499465,499467,499469-499489,499491-499492,499494-499531,499533-499562,499566-499627,499629-499715,499717-499732,499734-499755,499758-499763,499765-499780,499782-499795,499797-499802,499804-499844,499846,499848-499850,499852-499863,499865-499873,499875-499974,499976-499978,499980-500263,500265-500283,500285-500309,500311-501000,501002,501012-501057,501059-501095,501097-501390,501392-501410,501413-501447,501449-501454,501456,501458-501464,501466-501471,501473-501803,501805-501913,501915-501916,501918-501919,501921-501944,501946-502171,502173-502177,502181,502183-502247,502250-502252,502254-502260,502262-502267,502270,502272,502274-502575,502577-502609,502611-502619,502621-502626,502628-502654,502656-503592,503594-503603,503605-503608,503610-503636,503638-503645,503647-503705,503707-503789,503791-504024,504026-504111,504113-504506,504508-504735,504737-504863,504865-504867,504869-504914,504916-505241,505243-505254,505257-505267,505269-505354,505356-505891,505893-505971,505973-506400,506402-506404,506407-506438,506440-506516,506518-506541,506543-506966,506968-506971,506973-507095,507097-507108,507111-507454,507456,507459-507471,507473-507556,507558,507560-507581,507585-507594,507597,507599-507608,507610-507728,507730-507893,507895-507937,507940-508234,508236-508350,508352-508365,508367-508380,508383,508386-508415,508417-508648,508650-508941,508943-509146,509148-509171,509173-509175,509179-509201,509203-509207,509209-509215,509217-509222,509224-509477,509480-509627,509629-509634,509636-509641,509643-509736,509738-509931,509933-510059,510061-510075,510077-510158,510161-510896,510898-510938,510940-511388,511390-511922,511924-512287,512289-512698,512702-512813,512815-512817,512819-513359,513361-513370,513372-514702,514704-514886,514888-514902,514904-515126,515129-515141,515143-515516,515518-515534,515536-515538,515540-515648,515650-515651,515653-516070,516072-516411,516413-516448,516450,516452-517637,517639-517647,517649-517659,517661-517663,517665-517677,517679-517682,517684-517744,517746-518085,518087-518175,518177-518558,518560-518568,518571-518666,518668,518670-518699,518701-518987,518990-518992,518994-519908,519910-519932,519934-520414,520416-520842,520844-520937,520939-521362,521364-521681,521683-521704,521706-521709,521711-521714,521716-521781,521783-521792,521794-522462,522464-522527,522529-522534,522536-522566,522568-522958,522960,522962-522966,522968-522976,522978-522980,522982-522988,522992-522993,522995-523244,523246-523746,523748-524049,524051-524738,524741-524742,524744-524762,524764,524766,524768-525486,525488-525530,525532,525534,525537-525552,525554-525765,525767-525776,525778-525784,525789-525803,525805-525816,525818-525828,525830-525861,525863-525866,525868-526090,526092-526112,526114-526116,526119-526121,526123-526149,526151-526153,526155-526156,526160-526165,526167-526186,526188-526193,526196-526197,526200-526665,526667-526682,526686-526690,526693,526695-526708,526710-526713,526715-526775,526777-526802,526804-526806,526808-527048,527051-527052,527054-527181,527183-527486,527488-527492,527494-527498,527500-527508,527510-527517,527519-527536,527538-527555,527559-527802,527804-527842,527844-527847,527849-527875,527877-527940,527942-527958,527960-527971,527973-528002,528004,528006-528423,528425-529232,529234-529245,529247-529296,529298-529634,529636-529658,529660-529665,529667-529668,529670-530033,530035-530036,530038-530040,530045-530046,530050-530051,530053-530431,530433-530436,530439-530440,530443,530445-530446,530448,530450-530682,530684,530687-530696,530698-530733,530735-530776,530778-530795,530799,530801-530811,530813-530818,530820-531832 via svnmerge from
https://svn.apache.org/repos/asf/incubator/qpid/branches/M2 ........ r530838 | ritchiem | 2007-04-20 17:03:10 +0100 (Fri, 20 Apr 2007) | 2 lines Added addition log when broker is ready to process. Updated HeapExhaustion - to use system.out.println so you can set amqj.logging.level=warn to speed up test. ........ r531437 | rgreig | 2007-04-23 12:23:39 +0100 (Mon, 23 Apr 2007) | 1 line QPID-394. Removed revision tags. ........ r531456 | bhupendrab | 2007-04-23 13:58:24 +0100 (Mon, 23 Apr 2007) | 1 line QPID-470 : Catching the security exception for users, which have no access to management console ........ r531458 | bhupendrab | 2007-04-23 14:13:28 +0100 (Mon, 23 Apr 2007) | 1 line QPID-445 : Fixed the ClassCastException ........ r531512 | ritchiem | 2007-04-23 16:52:43 +0100 (Mon, 23 Apr 2007) | 3 lines QPID-472 - Creation of TemporaryQueues will not guarantee unique queue names if created rapidly. Updated TemporaryQueueTest.java so that it checks Headers/Queue/Topic for unroutable/mandatory messages beig returned. ........ r531513 | ritchiem | 2007-04-23 16:54:15 +0100 (Mon, 23 Apr 2007) | 1 line QPID-436 - topic exchange doesn't obey the mandatory flag ........ r531515 | ritchiem | 2007-04-23 16:58:04 +0100 (Mon, 23 Apr 2007) | 2 lines Update to system test so that the run as part of the build process as they were not running. Change to AMQMessage to ensure that the TxAckTest passes. Was failing as the reference count was being changed out of the increment/decrementReference methods ........ r531517 | ritchiem | 2007-04-23 16:59:59 +0100 (Mon, 23 Apr 2007) | 1 line Comment updates on the origin of the tests ........ r531518 | ritchiem | 2007-04-23 17:02:41 +0100 (Mon, 23 Apr 2007) | 1 line White Space changes ........ r531524 | bhupendrab | 2007-04-23 17:28:00 +0100 (Mon, 23 Apr 2007) | 1 line QPID-445 ........ r531526 | ritchiem | 2007-04-23 17:38:24 +0100 (Mon, 23 Apr 2007) | 3 lines QPID-290 - Java broker does not honor maximum number of channels threshold Applied patch from Nuno Santos ........ r531527 | ritchiem | 2007-04-23 17:38:44 +0100 (Mon, 23 Apr 2007) | 1 line ResetMessageListenerTest - needs to have IMMEDIATE_PREFETCH = true. ........ git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@531842 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/Main.java10
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java47
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java267
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/BinaryExpression.java41
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java7
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java131
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java7
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java104
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java50
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java15
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java2
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java2
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java4
-rw-r--r--java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java4
14 files changed, 380 insertions, 311 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/Main.java b/java/broker/src/main/java/org/apache/qpid/server/Main.java
index 1e5f56fe3a..c345b43aeb 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/Main.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/Main.java
@@ -373,6 +373,7 @@ public class Main
}
acceptor.bind(bindAddress, handler, sconfig);
+ //fixme qpid.AMQP should be using qpidproperties to get value
_brokerLogger.info("Qpid.AMQP listening on non-SSL address " + bindAddress);
}
@@ -381,14 +382,21 @@ public class Main
AMQPFastProtocolHandler handler = new AMQPProtocolProvider().getHandler();
try
{
- acceptor.bind(new InetSocketAddress(connectorConfig.sslPort), handler, sconfig);
+
+ acceptor.bind(new InetSocketAddress(connectorConfig.sslPort), handler, sconfig);
+ //fixme qpid.AMQP should be using qpidproperties to get value
_brokerLogger.info("Qpid.AMQP listening on SSL port " + connectorConfig.sslPort);
+
}
catch (IOException e)
{
_brokerLogger.error("Unable to listen on SSL port: " + e, e);
}
}
+
+ //fixme qpid.AMQP should be using qpidproperties to get value
+ _brokerLogger.info("Qpid Broker Ready :" + QpidProperties.getReleaseVersion()
+ + " build: " + QpidProperties.getBuildVersion());
}
catch (Exception e)
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java
index 8a50e93bf9..605a4bcb61 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java
@@ -57,19 +57,16 @@ public class DestWildExchange extends AbstractExchange
private ConcurrentHashMap<AMQShortString, List<AMQQueue>> _routingKey2queues = new ConcurrentHashMap<AMQShortString, List<AMQQueue>>();
- /**
- * DestWildExchangeMBean class implements the management interface for the
- * Topic exchanges.
- */
+ /** DestWildExchangeMBean class implements the management interface for the Topic exchanges. */
@MBeanDescription("Management Bean for Topic Exchange")
private final class DestWildExchangeMBean extends ExchangeMBean
{
// open mbean data types for representing exchange bindings
- private String[] _bindingItemNames = {"Routing Key", "Queue Names"};
- private String[] _bindingItemIndexNames = {_bindingItemNames[0]};
+ private String[] _bindingItemNames = {"Routing Key", "Queue Names"};
+ private String[] _bindingItemIndexNames = {_bindingItemNames[0]};
private OpenType[] _bindingItemTypes = new OpenType[2];
- private CompositeType _bindingDataType = null;
- private TabularType _bindinglistDataType = null;
+ private CompositeType _bindingDataType = null;
+ private TabularType _bindinglistDataType = null;
private TabularDataSupport _bindingList = null;
@MBeanConstructor("Creates an MBean for AMQ topic exchange")
@@ -80,22 +77,18 @@ public class DestWildExchange extends AbstractExchange
init();
}
- /**
- * initialises the OpenType objects.
- */
+ /** initialises the OpenType objects. */
private void init() throws OpenDataException
{
_bindingItemTypes[0] = SimpleType.STRING;
_bindingItemTypes[1] = new ArrayType(1, SimpleType.STRING);
_bindingDataType = new CompositeType("Exchange Binding", "Routing key and Queue names",
- _bindingItemNames, _bindingItemNames, _bindingItemTypes);
+ _bindingItemNames, _bindingItemNames, _bindingItemTypes);
_bindinglistDataType = new TabularType("Exchange Bindings", "Exchange Bindings for " + getName(),
- _bindingDataType, _bindingItemIndexNames);
+ _bindingDataType, _bindingItemIndexNames);
}
- /**
- * returns exchange bindings in tabular form
- */
+ /** returns exchange bindings in tabular form */
public TabularData bindings() throws OpenDataException
{
_bindingList = new TabularDataSupport(_bindinglistDataType);
@@ -122,7 +115,9 @@ public class DestWildExchange extends AbstractExchange
{
AMQQueue queue = getQueueRegistry().getQueue(new AMQShortString(queueName));
if (queue == null)
+ {
throw new JMException("Queue \"" + queueName + "\" is not registered with the exchange.");
+ }
try
{
@@ -159,7 +154,7 @@ public class DestWildExchange extends AbstractExchange
{
queueList.add(queue);
}
- else if(_logger.isDebugEnabled())
+ else if (_logger.isDebugEnabled())
{
_logger.debug("Queue " + queue + " is already registered with routing key " + routingKey);
}
@@ -176,10 +171,18 @@ public class DestWildExchange extends AbstractExchange
// TODO: add support for the immediate flag
if (queues == null)
{
- _logger.warn("No queues found for routing key " + routingKey);
- _logger.warn("Routing map contains: " + _routingKey2queues);
- //todo Check for valid topic - mritchie
- return;
+ if (info.isMandatory())
+ {
+ String msg = "Topic " + routingKey + " is not known to " + this;
+ throw new NoRouteException(msg, payload);
+ }
+ else
+ {
+ _logger.warn("No queues found for routing key " + routingKey);
+ _logger.warn("Routing map contains: " + _routingKey2queues);
+ //todo Check for valid topic - mritchie
+ return;
+ }
}
for (AMQQueue q : queues)
@@ -245,7 +248,7 @@ public class DestWildExchange extends AbstractExchange
}
}
- protected ExchangeMBean createMBean() throws AMQException
+ protected ExchangeMBean createMBean() throws AMQException
{
try
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java
index 1b3b116fd0..138d4155b1 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/ArithmeticExpression.java
@@ -1,3 +1,4 @@
+/* Copyright Rupert Smith, 2005 to 2006, all rights reserved. */
/**
*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -20,16 +21,14 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-
import org.apache.qpid.AMQException;
import org.apache.qpid.server.queue.AMQMessage;
/**
* An expression which performs an operation on two expression values
- *
- * @version $Revision$
*/
-public abstract class ArithmeticExpression extends BinaryExpression {
+public abstract class ArithmeticExpression extends BinaryExpression
+{
protected static final int INTEGER = 1;
protected static final int LONG = 2;
@@ -39,156 +38,213 @@ public abstract class ArithmeticExpression extends BinaryExpression {
* @param left
* @param right
*/
- public ArithmeticExpression(Expression left, Expression right) {
+ public ArithmeticExpression(Expression left, Expression right)
+ {
super(left, right);
}
- public static Expression createPlus(Expression left, Expression right) {
- return new ArithmeticExpression(left, right) {
- protected Object evaluate(Object lvalue, Object rvalue) {
- if (lvalue instanceof String) {
- String text = (String) lvalue;
- String answer = text + rvalue;
- return answer;
+ public static Expression createPlus(Expression left, Expression right)
+ {
+ return new ArithmeticExpression(left, right)
+ {
+ protected Object evaluate(Object lvalue, Object rvalue)
+ {
+ if (lvalue instanceof String)
+ {
+ String text = (String) lvalue;
+ String answer = text + rvalue;
+
+ return answer;
+ }
+ else if (lvalue instanceof Number)
+ {
+ return plus((Number) lvalue, asNumber(rvalue));
+ }
+
+ throw new RuntimeException("Cannot call plus operation on: " + lvalue + " and: " + rvalue);
}
- else if (lvalue instanceof Number) {
- return plus((Number) lvalue, asNumber(rvalue));
+
+ public String getExpressionSymbol()
+ {
+ return "+";
}
- throw new RuntimeException("Cannot call plus operation on: " + lvalue + " and: " + rvalue);
- }
+ };
+ }
- public String getExpressionSymbol()
+ public static Expression createMinus(Expression left, Expression right)
+ {
+ return new ArithmeticExpression(left, right)
{
- return "+";
- }
- };
- }
+ protected Object evaluate(Object lvalue, Object rvalue)
+ {
+ if (lvalue instanceof Number)
+ {
+ return minus((Number) lvalue, asNumber(rvalue));
+ }
- public static Expression createMinus(Expression left, Expression right) {
- return new ArithmeticExpression(left, right) {
- protected Object evaluate(Object lvalue, Object rvalue) {
- if (lvalue instanceof Number) {
- return minus((Number) lvalue, asNumber(rvalue));
+ throw new RuntimeException("Cannot call minus operation on: " + lvalue + " and: " + rvalue);
}
- throw new RuntimeException("Cannot call minus operation on: " + lvalue + " and: " + rvalue);
- }
- public String getExpressionSymbol() {
- return "-";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return "-";
+ }
+ };
}
- public static Expression createMultiply(Expression left, Expression right) {
- return new ArithmeticExpression(left, right) {
+ public static Expression createMultiply(Expression left, Expression right)
+ {
+ return new ArithmeticExpression(left, right)
+ {
+
+ protected Object evaluate(Object lvalue, Object rvalue)
+ {
+ if (lvalue instanceof Number)
+ {
+ return multiply((Number) lvalue, asNumber(rvalue));
+ }
- protected Object evaluate(Object lvalue, Object rvalue) {
- if (lvalue instanceof Number) {
- return multiply((Number) lvalue, asNumber(rvalue));
+ throw new RuntimeException("Cannot call multiply operation on: " + lvalue + " and: " + rvalue);
}
- throw new RuntimeException("Cannot call multiply operation on: " + lvalue + " and: " + rvalue);
- }
- public String getExpressionSymbol() {
- return "*";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return "*";
+ }
+ };
}
- public static Expression createDivide(Expression left, Expression right) {
- return new ArithmeticExpression(left, right) {
+ public static Expression createDivide(Expression left, Expression right)
+ {
+ return new ArithmeticExpression(left, right)
+ {
- protected Object evaluate(Object lvalue, Object rvalue) {
- if (lvalue instanceof Number) {
- return divide((Number) lvalue, asNumber(rvalue));
+ protected Object evaluate(Object lvalue, Object rvalue)
+ {
+ if (lvalue instanceof Number)
+ {
+ return divide((Number) lvalue, asNumber(rvalue));
+ }
+
+ throw new RuntimeException("Cannot call divide operation on: " + lvalue + " and: " + rvalue);
}
- throw new RuntimeException("Cannot call divide operation on: " + lvalue + " and: " + rvalue);
- }
- public String getExpressionSymbol() {
- return "/";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return "/";
+ }
+ };
}
- public static Expression createMod(Expression left, Expression right) {
- return new ArithmeticExpression(left, right) {
+ public static Expression createMod(Expression left, Expression right)
+ {
+ return new ArithmeticExpression(left, right)
+ {
+
+ protected Object evaluate(Object lvalue, Object rvalue)
+ {
+ if (lvalue instanceof Number)
+ {
+ return mod((Number) lvalue, asNumber(rvalue));
+ }
- protected Object evaluate(Object lvalue, Object rvalue) {
- if (lvalue instanceof Number) {
- return mod((Number) lvalue, asNumber(rvalue));
+ throw new RuntimeException("Cannot call mod operation on: " + lvalue + " and: " + rvalue);
}
- throw new RuntimeException("Cannot call mod operation on: " + lvalue + " and: " + rvalue);
- }
- public String getExpressionSymbol() {
- return "%";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return "%";
+ }
+ };
}
- protected Number plus(Number left, Number right) {
- switch (numberType(left, right)) {
- case INTEGER:
- return new Integer(left.intValue() + right.intValue());
- case LONG:
- return new Long(left.longValue() + right.longValue());
- default:
- return new Double(left.doubleValue() + right.doubleValue());
+ protected Number plus(Number left, Number right)
+ {
+ switch (numberType(left, right))
+ {
+
+ case INTEGER:
+ return new Integer(left.intValue() + right.intValue());
+
+ case LONG:
+ return new Long(left.longValue() + right.longValue());
+
+ default:
+ return new Double(left.doubleValue() + right.doubleValue());
}
}
- protected Number minus(Number left, Number right) {
- switch (numberType(left, right)) {
- case INTEGER:
- return new Integer(left.intValue() - right.intValue());
- case LONG:
- return new Long(left.longValue() - right.longValue());
- default:
- return new Double(left.doubleValue() - right.doubleValue());
+ protected Number minus(Number left, Number right)
+ {
+ switch (numberType(left, right))
+ {
+
+ case INTEGER:
+ return new Integer(left.intValue() - right.intValue());
+
+ case LONG:
+ return new Long(left.longValue() - right.longValue());
+
+ default:
+ return new Double(left.doubleValue() - right.doubleValue());
}
}
- protected Number multiply(Number left, Number right) {
- switch (numberType(left, right)) {
- case INTEGER:
- return new Integer(left.intValue() * right.intValue());
- case LONG:
- return new Long(left.longValue() * right.longValue());
- default:
- return new Double(left.doubleValue() * right.doubleValue());
+ protected Number multiply(Number left, Number right)
+ {
+ switch (numberType(left, right))
+ {
+
+ case INTEGER:
+ return new Integer(left.intValue() * right.intValue());
+
+ case LONG:
+ return new Long(left.longValue() * right.longValue());
+
+ default:
+ return new Double(left.doubleValue() * right.doubleValue());
}
}
- protected Number divide(Number left, Number right) {
+ protected Number divide(Number left, Number right)
+ {
return new Double(left.doubleValue() / right.doubleValue());
}
- protected Number mod(Number left, Number right) {
+ protected Number mod(Number left, Number right)
+ {
return new Double(left.doubleValue() % right.doubleValue());
}
- private int numberType(Number left, Number right) {
- if (isDouble(left) || isDouble(right)) {
+ private int numberType(Number left, Number right)
+ {
+ if (isDouble(left) || isDouble(right))
+ {
return DOUBLE;
}
- else if (left instanceof Long || right instanceof Long) {
+ else if ((left instanceof Long) || (right instanceof Long))
+ {
return LONG;
}
- else {
+ else
+ {
return INTEGER;
}
}
- private boolean isDouble(Number n) {
- return n instanceof Float || n instanceof Double;
+ private boolean isDouble(Number n)
+ {
+ return (n instanceof Float) || (n instanceof Double);
}
- protected Number asNumber(Object value) {
- if (value instanceof Number) {
+ protected Number asNumber(Object value)
+ {
+ if (value instanceof Number)
+ {
return (Number) value;
}
- else {
+ else
+ {
throw new RuntimeException("Cannot convert value: " + value + " into a number");
}
}
@@ -196,22 +252,25 @@ public abstract class ArithmeticExpression extends BinaryExpression {
public Object evaluate(AMQMessage message) throws AMQException
{
Object lvalue = left.evaluate(message);
- if (lvalue == null) {
+ if (lvalue == null)
+ {
return null;
}
+
Object rvalue = right.evaluate(message);
- if (rvalue == null) {
+ if (rvalue == null)
+ {
return null;
}
+
return evaluate(lvalue, rvalue);
}
-
/**
* @param lvalue
* @param rvalue
* @return
*/
- abstract protected Object evaluate(Object lvalue, Object rvalue);
+ protected abstract Object evaluate(Object lvalue, Object rvalue);
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/BinaryExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/BinaryExpression.java
index 4256ab9189..1a1024bd2b 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/BinaryExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/BinaryExpression.java
@@ -1,3 +1,4 @@
+/* Copyright Rupert Smith, 2005 to 2006, all rights reserved. */
/**
*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -20,35 +21,35 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-
-
/**
* An expression which performs an operation on two expression values.
- *
- * @version $Revision$
*/
-abstract public class BinaryExpression implements Expression {
+public abstract class BinaryExpression implements Expression
+{
protected Expression left;
protected Expression right;
- public BinaryExpression(Expression left, Expression right) {
+ public BinaryExpression(Expression left, Expression right)
+ {
this.left = left;
this.right = right;
}
- public Expression getLeft() {
+ public Expression getLeft()
+ {
return left;
}
- public Expression getRight() {
+ public Expression getRight()
+ {
return right;
}
-
/**
* @see java.lang.Object#toString()
*/
- public String toString() {
+ public String toString()
+ {
return "(" + left.toString() + " " + getExpressionSymbol() + " " + right.toString() + ")";
}
@@ -57,7 +58,8 @@ abstract public class BinaryExpression implements Expression {
*
* @see java.lang.Object#hashCode()
*/
- public int hashCode() {
+ public int hashCode()
+ {
return toString().hashCode();
}
@@ -66,11 +68,14 @@ abstract public class BinaryExpression implements Expression {
*
* @see java.lang.Object#equals(java.lang.Object)
*/
- public boolean equals(Object o) {
+ public boolean equals(Object o)
+ {
- if (o == null || !this.getClass().equals(o.getClass())) {
+ if ((o == null) || !this.getClass().equals(o.getClass()))
+ {
return false;
}
+
return toString().equals(o.toString());
}
@@ -81,20 +86,22 @@ abstract public class BinaryExpression implements Expression {
*
* @return
*/
- abstract public String getExpressionSymbol();
+ public abstract String getExpressionSymbol();
/**
* @param expression
*/
- public void setRight(Expression expression) {
+ public void setRight(Expression expression)
+ {
right = expression;
}
/**
* @param expression
*/
- public void setLeft(Expression expression) {
+ public void setLeft(Expression expression)
+ {
left = expression;
}
-
+
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java
index 122527d4f3..0d5c5009f7 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/BooleanExpression.java
@@ -1,3 +1,4 @@
+/* Copyright Rupert Smith, 2005 to 2006, all rights reserved. */
/**
*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -20,18 +21,12 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-
import org.apache.qpid.AMQException;
import org.apache.qpid.server.queue.AMQMessage;
-
-
-
/**
* A BooleanExpression is an expression that always
* produces a Boolean result.
- *
- * @version $Revision$
*/
public interface BooleanExpression extends Expression
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
index cedb8d7ca8..606a59e0fa 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
@@ -1,3 +1,4 @@
+/* Copyright Rupert Smith, 2005 to 2006, all rights reserved. */
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -32,8 +33,6 @@ import org.apache.qpid.server.queue.AMQMessage;
/**
* A filter performing a comparison of two objects
- *
- * @version $Revision$
*/
public abstract class ComparisonExpression extends BinaryExpression implements BooleanExpression
{
@@ -153,7 +152,7 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
{
return
Boolean.FALSE;
- //throw new RuntimeException("LIKE can only operate on String identifiers. LIKE attemped on: '" + rv.getClass());
+ // throw new RuntimeException("LIKE can only operate on String identifiers. LIKE attemped on: '" + rv.getClass());
}
return likePattern.matcher((String) rv).matches() ? Boolean.TRUE : Boolean.FALSE;
@@ -240,42 +239,42 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
private static BooleanExpression doCreateEqual(Expression left, Expression right)
{
return new ComparisonExpression(left, right)
- {
-
- public Object evaluate(AMQMessage message) throws AMQException
{
- Object lv = left.evaluate(message);
- Object rv = right.evaluate(message);
- // Iff one of the values is null
- if ((lv == null) ^ (rv == null))
+ public Object evaluate(AMQMessage message) throws AMQException
{
+ Object lv = left.evaluate(message);
+ Object rv = right.evaluate(message);
+
+ // Iff one of the values is null
+ if ((lv == null) ^ (rv == null))
+ {
+ return Boolean.FALSE;
+ }
+
+ if ((lv == rv) || lv.equals(rv))
+ {
+ return Boolean.TRUE;
+ }
+
+ if ((lv instanceof Comparable) && (rv instanceof Comparable))
+ {
+ return compare((Comparable) lv, (Comparable) rv);
+ }
+
return Boolean.FALSE;
}
- if ((lv == rv) || lv.equals(rv))
+ protected boolean asBoolean(int answer)
{
- return Boolean.TRUE;
+ return answer == 0;
}
- if ((lv instanceof Comparable) && (rv instanceof Comparable))
+ public String getExpressionSymbol()
{
- return compare((Comparable) lv, (Comparable) rv);
+ return "=";
}
-
- return Boolean.FALSE;
- }
-
- protected boolean asBoolean(int answer)
- {
- return answer == 0;
- }
-
- public String getExpressionSymbol()
- {
- return "=";
- }
- };
+ };
}
public static BooleanExpression createGreaterThan(final Expression left, final Expression right)
@@ -284,17 +283,17 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
checkLessThanOperand(right);
return new ComparisonExpression(left, right)
- {
- protected boolean asBoolean(int answer)
{
- return answer > 0;
- }
+ protected boolean asBoolean(int answer)
+ {
+ return answer > 0;
+ }
- public String getExpressionSymbol()
- {
- return ">";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return ">";
+ }
+ };
}
public static BooleanExpression createGreaterThanEqual(final Expression left, final Expression right)
@@ -303,17 +302,17 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
checkLessThanOperand(right);
return new ComparisonExpression(left, right)
- {
- protected boolean asBoolean(int answer)
{
- return answer >= 0;
- }
+ protected boolean asBoolean(int answer)
+ {
+ return answer >= 0;
+ }
- public String getExpressionSymbol()
- {
- return ">=";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return ">=";
+ }
+ };
}
public static BooleanExpression createLessThan(final Expression left, final Expression right)
@@ -322,19 +321,19 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
checkLessThanOperand(right);
return new ComparisonExpression(left, right)
- {
-
- protected boolean asBoolean(int answer)
{
- return answer < 0;
- }
- public String getExpressionSymbol()
- {
- return "<";
- }
+ protected boolean asBoolean(int answer)
+ {
+ return answer < 0;
+ }
+
+ public String getExpressionSymbol()
+ {
+ return "<";
+ }
- };
+ };
}
public static BooleanExpression createLessThanEqual(final Expression left, final Expression right)
@@ -343,18 +342,18 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
checkLessThanOperand(right);
return new ComparisonExpression(left, right)
- {
-
- protected boolean asBoolean(int answer)
{
- return answer <= 0;
- }
- public String getExpressionSymbol()
- {
- return "<=";
- }
- };
+ protected boolean asBoolean(int answer)
+ {
+ return answer <= 0;
+ }
+
+ public String getExpressionSymbol()
+ {
+ return "<=";
+ }
+ };
}
/**
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java
index 4a2130e767..cb40a32290 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/Expression.java
@@ -1,3 +1,4 @@
+/* Copyright Rupert Smith, 2005 to 2006, all rights reserved. */
/**
*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -15,7 +16,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.qpid.server.filter;
//
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
@@ -24,11 +24,8 @@ package org.apache.qpid.server.filter;
import org.apache.qpid.AMQException;
import org.apache.qpid.server.queue.AMQMessage;
-
/**
* Represents an expression
- *
- * @version $Revision$
*/
public interface Expression
{
@@ -37,5 +34,5 @@ public interface Expression
* @return the value of this expression
*/
public Object evaluate(AMQMessage message) throws AMQException;
-
+
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java
index dea6092b8a..a90775a186 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/LogicExpression.java
@@ -1,3 +1,4 @@
+/* Copyright Rupert Smith, 2005 to 2006, all rights reserved. */
/**
*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -25,69 +26,86 @@ import org.apache.qpid.server.queue.AMQMessage;
/**
* A filter performing a comparison of two objects
- *
- * @version $Revision$
*/
-public abstract class LogicExpression extends BinaryExpression implements BooleanExpression {
-
- public static BooleanExpression createOR(BooleanExpression lvalue, BooleanExpression rvalue) {
- return new LogicExpression(lvalue, rvalue) {
-
- public Object evaluate(AMQMessage message) throws AMQException {
-
- Boolean lv = (Boolean) left.evaluate(message);
- // Can we do an OR shortcut??
- if (lv !=null && lv.booleanValue()) {
- return Boolean.TRUE;
+public abstract class LogicExpression extends BinaryExpression implements BooleanExpression
+{
+
+ public static BooleanExpression createOR(BooleanExpression lvalue, BooleanExpression rvalue)
+ {
+ return new LogicExpression(lvalue, rvalue)
+ {
+
+ public Object evaluate(AMQMessage message) throws AMQException
+ {
+
+ Boolean lv = (Boolean) left.evaluate(message);
+ // Can we do an OR shortcut??
+ if ((lv != null) && lv.booleanValue())
+ {
+ return Boolean.TRUE;
+ }
+
+ Boolean rv = (Boolean) right.evaluate(message);
+
+ return (rv == null) ? null : rv;
+ }
+
+ public String getExpressionSymbol()
+ {
+ return "OR";
}
-
- Boolean rv = (Boolean) right.evaluate(message);
- return rv==null ? null : rv;
- }
-
- public String getExpressionSymbol() {
- return "OR";
- }
- };
+ };
}
- public static BooleanExpression createAND(BooleanExpression lvalue, BooleanExpression rvalue) {
- return new LogicExpression(lvalue, rvalue) {
+ public static BooleanExpression createAND(BooleanExpression lvalue, BooleanExpression rvalue)
+ {
+ return new LogicExpression(lvalue, rvalue)
+ {
- public Object evaluate(AMQMessage message) throws AMQException {
+ public Object evaluate(AMQMessage message) throws AMQException
+ {
- Boolean lv = (Boolean) left.evaluate(message);
+ Boolean lv = (Boolean) left.evaluate(message);
- // Can we do an AND shortcut??
- if (lv == null)
- return null;
- if (!lv.booleanValue()) {
- return Boolean.FALSE;
- }
+ // Can we do an AND shortcut??
+ if (lv == null)
+ {
+ return null;
+ }
+
+ if (!lv.booleanValue())
+ {
+ return Boolean.FALSE;
+ }
+
+ Boolean rv = (Boolean) right.evaluate(message);
- Boolean rv = (Boolean) right.evaluate(message);
- return rv == null ? null : rv;
- }
+ return (rv == null) ? null : rv;
+ }
- public String getExpressionSymbol() {
- return "AND";
- }
- };
+ public String getExpressionSymbol()
+ {
+ return "AND";
+ }
+ };
}
/**
* @param left
* @param right
*/
- public LogicExpression(BooleanExpression left, BooleanExpression right) {
+ public LogicExpression(BooleanExpression left, BooleanExpression right)
+ {
super(left, right);
}
- abstract public Object evaluate(AMQMessage message) throws AMQException;
+ public abstract Object evaluate(AMQMessage message) throws AMQException;
- public boolean matches(AMQMessage message) throws AMQException {
+ public boolean matches(AMQMessage message) throws AMQException
+ {
Object object = evaluate(message);
- return object!=null && object==Boolean.TRUE;
+
+ return (object != null) && (object == Boolean.TRUE);
}
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java b/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
index 7d25fb8c69..3ab23e8b46 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
@@ -17,8 +17,7 @@
*/
package org.apache.qpid.server.management;
-import org.apache.qpid.AMQException;
-import org.apache.qpid.server.security.access.AMQUserManagementMBean;
+import org.apache.qpid.server.security.access.UserManagement;
import org.apache.log4j.Logger;
import javax.management.remote.MBeanServerForwarder;
@@ -37,12 +36,6 @@ import java.security.Principal;
import java.security.AccessControlContext;
import java.util.Set;
import java.util.Properties;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.FileInputStream;
/**
* This class can be used by the JMXConnectorServer as an InvocationHandler for the mbean operations. This implements
@@ -110,6 +103,7 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler
// Restrict access to "createMBean" and "unregisterMBean" to any user
if (methodName.equals("createMBean") || methodName.equals("unregisterMBean"))
{
+ _logger.debug("User trying to create or unregister an MBean");
throw new SecurityException("Access denied");
}
@@ -155,32 +149,8 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler
{
if (args[0] instanceof ObjectName)
{
- String mbeanMethod = (args.length > 1) ? (String) args[1] : null;
- if (mbeanMethod == null)
- {
- if (args[0] instanceof ObjectName)
- {
- ObjectName object = (ObjectName) args[0];
- return object.getCanonicalName().contains("UserManagement");
- }
- else
- {
- return false;
- }
- }
-
- try
- {
- MBeanInfo mbeanInfo = mbs.getMBeanInfo((ObjectName) args[0]);
- if (mbeanInfo != null)
- {
- return mbeanInfo.getClassName().equals("org.apache.qpid.server.security.access.AMQUserManagementMBean");
- }
- }
- catch (JMException ex)
- {
- return false;
- }
+ ObjectName object = (ObjectName) args[0];
+ return UserManagement.TYPE.equals(object.getKeyProperty("type"));
}
return false;
@@ -223,16 +193,16 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler
private boolean isReadOnlyMethod(Method method, Object[] args)
{
String methodName = method.getName();
- if (methodName.equals("queryMBeans") ||
- methodName.equals("getDefaultDomain") ||
- methodName.equals("getMBeanInfo") ||
- methodName.equals("getAttribute") ||
- methodName.equals("getAttributes"))
+ if (methodName.startsWith("query") || methodName.startsWith("get"))
{
return true;
}
+ else if (methodName.startsWith("set"))
+ {
+ return false;
+ }
- if (args[0] instanceof ObjectName)
+ if ((args[0] instanceof ObjectName) && (methodName.equals("invoke")))
{
String mbeanMethod = (args.length > 1) ? (String) args[1] : null;
if (mbeanMethod == null)
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java
index 2e62c2f1e4..3162efa183 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java
@@ -463,7 +463,17 @@ public class AMQMinaProtocolSession implements AMQProtocolSession,
throw new AMQException("Session is marked awaiting channel close");
}
- _channelMap.put(channelId, channel);
+ if (_channelMap.size() == _maxNoOfChannels)
+ {
+ String errorMessage = toString() + ": maximum number of channels has been reached (" +
+ _maxNoOfChannels + "); can't create channel";
+ _logger.error(errorMessage);
+ throw new AMQException(AMQConstant.NOT_ALLOWED, errorMessage);
+ }
+ else
+ {
+ _channelMap.put(channel.getChannelId(), channel);
+ }
if (((channelId & CHANNEL_CACHE_SIZE) == channelId))
{
@@ -755,8 +765,9 @@ public class AMQMinaProtocolSession implements AMQProtocolSession,
{
return _authorizedID;
}
+
public String getClientVersion()
{
- return _clientVersion == null ? null : _clientVersion.toString();
+ return _clientVersion == null ? null : _clientVersion.toString();
}
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
index e19038504f..955aaa6acb 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
@@ -366,7 +366,7 @@ public class AMQMessage
*/
public AMQMessage takeReference()
{
- _referenceCount.incrementAndGet();
+ incrementReference();// _referenceCount.incrementAndGet();
return this;
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
index 65d5906d05..0adf6153f8 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
@@ -615,7 +615,7 @@ public class AMQQueue implements Managable, Comparable
}
catch (MessageCleanupException e)
{
- //Message was dequeued, but could notthen be deleted
+ //Message was dequeued, but could not then be deleted
//though it is no longer referenced. This should be very
//rare and can be detected and cleaned up on recovery or
//done through some form of manual intervention.
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java b/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java
index ec7031534b..b8762aa43b 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/security/access/UserManagement.java
@@ -63,7 +63,7 @@ public interface UserManagement
impact = MBeanOperationInfo.ACTION)
boolean setRights(@MBeanOperationParameter(name = "username", description = "Username")String username,
@MBeanOperationParameter(name = "read", description = "Administration read")boolean read,
- @MBeanOperationParameter(name = "write", description = "Administration write")boolean write,
+ @MBeanOperationParameter(name = "readAndWrite", description = "Administration write")boolean write,
@MBeanOperationParameter(name = "admin", description = "Administration rights")boolean admin);
/**
@@ -82,7 +82,7 @@ public interface UserManagement
boolean createUser(@MBeanOperationParameter(name = "username", description = "Username")String username,
@MBeanOperationParameter(name = "password", description = "Password")char[] password,
@MBeanOperationParameter(name = "read", description = "Administration read")boolean read,
- @MBeanOperationParameter(name = "write", description = "Administration write")boolean write,
+ @MBeanOperationParameter(name = "readAndWrite", description = "Administration write")boolean write,
@MBeanOperationParameter(name = "admin", description = "Administration rights")boolean admin);
/**
diff --git a/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java b/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java
index a5c5763db1..a9496d0de1 100644
--- a/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java
+++ b/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java
@@ -106,7 +106,7 @@ public class AMQQueueAlertTest extends TestCase
/**
* Tests if Queue Depth alert is thrown when queue depth reaches the threshold value
*
- * Based on FT402 subbmitted by client
+ * Based on FT-402 subbmitted by client
*
* @throws Exception
*/
@@ -134,6 +134,8 @@ public class AMQQueueAlertTest extends TestCase
* Tests if MESSAGE AGE alert is thrown, when a message is in the queue for time higher than threshold value of
* message age
*
+ * Alternative test to FT-401 provided by client
+ *
* @throws Exception
*/
public void testMessageAgeAlert() throws Exception