You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2017/04/16 22:31:58 UTC
[07/72] [abbrv] [partial] flex-blazeds git commit: - Major code scrub
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/adapters/MessagingSecurityConstraintManager.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/adapters/MessagingSecurityConstraintManager.java b/core/src/flex/messaging/services/messaging/adapters/MessagingSecurityConstraintManager.java
deleted file mode 100644
index 644771a..0000000
--- a/core/src/flex/messaging/services/messaging/adapters/MessagingSecurityConstraintManager.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging.adapters;
-
-import flex.messaging.FlexContext;
-import flex.messaging.MessageBroker;
-import flex.messaging.config.ConfigurationConstants;
-import flex.messaging.config.ConfigMap;
-import flex.messaging.config.SecurityConstraint;
-import flex.messaging.config.SecuritySettings;
-import flex.messaging.security.LoginManager;
-import flex.messaging.security.SecurityException;
-
-/**
- * Messaging security constraint managers are used by messaging destinations
- * to assert authorization of send and subscribe operations.
- */
-public final class MessagingSecurityConstraintManager
-{
- public static final String SEND_SECURITY_CONSTRAINT = "send-security-constraint";
- public static final String SUBSCRIBE_SECURITY_CONSTRAINT = "subscribe-security-constraint";
-
- private static final int NO_SEC_CONSTRAINT = 10062;
-
- private LoginManager loginManager;
- private SecuritySettings securitySettings;
-
- private SecurityConstraint sendConstraint;
- private SecurityConstraint subscribeConstraint;
-
- /**
- * Creates a new <code>MessagingSecurityConstraintManager</code> instance.
- *
- * @param broker Associated <code>MessageBroker</code>.
- */
- public MessagingSecurityConstraintManager(MessageBroker broker)
- {
- this.loginManager = broker.getLoginManager();
- this.securitySettings = broker.getSecuritySettings();
- }
-
- /**
- * Sets the send constraint which is used when to assert authorization when
- * sending a message.
- *
- * @param ref The reference id of the constraint
- */
- public void setSendConstraint(String ref)
- {
- validateConstraint(ref);
- sendConstraint = securitySettings.getConstraint(ref);
- }
-
- /**
- * Sets the subscribe constraint which is used to assert authorization in
- * subscribe, multi-subscribe, and unsubscribe operations.
- *
- * @param ref The reference id of the constraint
- */
- public void setSubscribeConstraint(String ref)
- {
- validateConstraint(ref);
- subscribeConstraint = securitySettings.getConstraint(ref);
- }
-
- /**
- *
- * Asserts send authorizations.
- */
- public void assertSendAuthorization()
- {
- checkConstraint(sendConstraint);
- }
-
- /**
- *
- * Asserts subscribe authorizations.
- */
- public void assertSubscribeAuthorization()
- {
- checkConstraint(subscribeConstraint);
- }
-
- /**
- *
- * Creates security constraints from the given server settings.
- *
- * @param serverSettings The <code>ConfigMap</code> of server settings.
- */
- public void createConstraints(ConfigMap serverSettings)
- {
- // Send constraint
- ConfigMap send = serverSettings.getPropertyAsMap(SEND_SECURITY_CONSTRAINT, null);
- if (send != null)
- {
- String ref = send.getPropertyAsString(ConfigurationConstants.REF_ATTR, null);
- createSendConstraint(ref);
- }
-
- // Subscribe constraint
- ConfigMap subscribe = serverSettings.getPropertyAsMap(SUBSCRIBE_SECURITY_CONSTRAINT, null);
- if (subscribe != null)
- {
- String ref = subscribe.getPropertyAsString(ConfigurationConstants.REF_ATTR, null);
- createSubscribeConstraint(ref);
- }
- }
-
- void createSendConstraint(String ref)
- {
- if (ref != null)
- sendConstraint = securitySettings.getConstraint(ref);
- }
-
- void createSubscribeConstraint(String ref)
- {
- if (ref != null)
- subscribeConstraint = securitySettings.getConstraint(ref);
- }
-
- private void checkConstraint(SecurityConstraint constraint)
- {
- if (constraint != null && !FlexContext.isMessageFromPeer())
- {
- try
- {
- loginManager.checkConstraint(constraint);
- }
- catch (SecurityException e)
- {
- throw e;
- }
- }
- }
-
- private void validateConstraint(String ref)
- {
- // If an attempt is made to use a constraint that we do not know about,
- // do not let the authorization succeed.
- if (securitySettings.getConstraint(ref) == null)
- {
- // Security constraint {0} is not defined.
- SecurityException se = new SecurityException();
- se.setMessage(NO_SEC_CONSTRAINT, new Object[] {ref});
- throw se;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/adapters/SyncMessageReceiver.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/adapters/SyncMessageReceiver.java b/core/src/flex/messaging/services/messaging/adapters/SyncMessageReceiver.java
deleted file mode 100644
index 46fed23..0000000
--- a/core/src/flex/messaging/services/messaging/adapters/SyncMessageReceiver.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging.adapters;
-
-import javax.jms.JMSException;
-import javax.jms.Message;
-
-import flex.messaging.log.Log;
-
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-/**
- * A <code>MessageReceiver</code> that receives messages from JMS using
- * synchronous <code>javax.jms.MessageConsumer.receive</code> call.
- *
- *
- */
-class SyncMessageReceiver implements MessageReceiver
-{
- private ScheduledExecutorService messageReceiverService;
- private boolean isScheduled = false;
-
- private JMSConsumer jmsConsumer;
- private int syncMaxReceiveThreads;
- private long syncReceiveIntervalMillis;
- private long syncReceiveWaitMillis;
-
- /**
- * Constructs a new <code>SyncMessageReceiver</code> with default delivery settings.
- *
- * @param jmsConsumer JMSConsumer associated with the SynMessageReceiver.
- */
- public SyncMessageReceiver(JMSConsumer jmsConsumer)
- {
- this.jmsConsumer = jmsConsumer;
- syncReceiveIntervalMillis = JMSConfigConstants.defaultSyncReceiveIntervalMillis;
- syncReceiveWaitMillis = JMSConfigConstants.defaultSyncReceiveWaitMillis;
- syncMaxReceiveThreads = 1; // Always use one thread.
- }
-
- /**
- * Returns the interval of the sync receive message call.
- *
- * @return The interval of the sync receive message call.
- */
- public long getSyncReceiveIntervalMillis()
- {
- return syncReceiveIntervalMillis;
- }
-
- /**
- * Sets the interval of the receive message call. This property
- * is optional and defaults to 100.
- *
- * @param syncReceiveIntervalMillis A positive long that indicates
- * the interval of the receive message call.
- */
- public void setSyncReceiveIntervalMillis(long syncReceiveIntervalMillis)
- {
- if (syncReceiveIntervalMillis < 1)
- syncReceiveIntervalMillis = JMSConfigConstants.defaultSyncReceiveIntervalMillis;
- this.syncReceiveIntervalMillis = syncReceiveIntervalMillis;
- }
-
- /**
- * Returns how long a JMS proxy waits for a message before returning.
- *
- * @return How long a JMS proxy waits for a message before returning.
- */
- public long getSyncReceiveWaitMillis()
- {
- return syncReceiveWaitMillis;
- }
-
- /**
- * Sets how long a JMS proxy waits for a message before returning.
- * This property is optional and defaults to zero (no wait).
- *
- * @param syncReceiveWaitMillis A non-negative value that indicates how
- * long a JMS proxy waits for a message before returning. Zero means no
- * wait, negative one means wait until a message arrives.
- */
- public void setSyncReceiveWaitMillis(long syncReceiveWaitMillis)
- {
- if (syncReceiveWaitMillis < -1)
- syncReceiveWaitMillis = JMSConfigConstants.defaultSyncReceiveWaitMillis;
- this.syncReceiveWaitMillis = syncReceiveWaitMillis;
- }
-
- /**
- * Implements MessageReceiver.startReceive.
- */
- public void startReceive()
- {
- if (!isScheduled)
- {
- if (Log.isDebug())
- Log.getLogger(JMSAdapter.LOG_CATEGORY).debug(Thread.currentThread()
- + " JMS consumer sync receive thread for JMS destination '"
- + jmsConsumer.destinationJndiName + "' is starting to poll the JMS server for new messages.");
-
- ThreadFactory mrtf = new MessageReceiveThreadFactory();
- messageReceiverService = Executors.newScheduledThreadPool(syncMaxReceiveThreads, mrtf);
- messageReceiverService.scheduleAtFixedRate(new MessageReceiveThread(), syncReceiveIntervalMillis, syncReceiveIntervalMillis, TimeUnit.MILLISECONDS);
- isScheduled = true;
- }
- }
-
- /**
- * Implements MessageReceivers.stopReceive.
- */
- public void stopReceive()
- {
- if (messageReceiverService != null)
- messageReceiverService.shutdown();
- }
-
- /**
- * Used internally to receive messages as determined by syncReceiveWaitMillis.
- */
- private Message receiveMessage() throws JMSException
- {
- if (syncReceiveWaitMillis == -1)
- return jmsConsumer.receive();
- else if (syncReceiveWaitMillis == 0)
- return jmsConsumer.receiveNoWait();
- else if (syncReceiveWaitMillis > 0)
- return jmsConsumer.receive(syncReceiveWaitMillis);
- return null;
- }
-
- /**
- * Thread Factory used to create message receive threads.
- */
- class MessageReceiveThreadFactory implements ThreadFactory
- {
-
- /**
- * Used to uniquely identify each new message receive thread created.
- */
- private int receiveThreadCount;
-
- /**
- * Creates a new message receive thread.
- * Synchronized to uniquely identify each receive thread at construct time safely.
- *
- * @param r The runnable to assign to the new thread.
- */
- public synchronized Thread newThread(Runnable r)
- {
- Thread t = new Thread(r);
- t.setName("MessageReceiveThread" + "-" + receiveThreadCount++);
- t.setDaemon(true);
- if (Log.isDebug())
- Log.getLogger(JMSAdapter.LOG_CATEGORY).debug("Created message receive thread: " + t.getName());
- return t;
- }
-
- }
-
- /**
- * Message receive threads that perform sync javax.jms.MessageConsumer.receive
- * calls.
- */
- class MessageReceiveThread implements Runnable
- {
- public void run()
- {
- try
- {
- while (true)
- {
- Message message = receiveMessage();
- if (message == null) break;
- jmsConsumer.onMessage(message);
- }
- }
- catch (JMSException jmsEx)
- {
- jmsConsumer.onException(jmsEx);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/adapters/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/adapters/package-info.java b/core/src/flex/messaging/services/messaging/adapters/package-info.java
deleted file mode 100644
index d647df7..0000000
--- a/core/src/flex/messaging/services/messaging/adapters/package-info.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging.adapters;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/package-info.java b/core/src/flex/messaging/services/messaging/package-info.java
deleted file mode 100644
index 53123a5..0000000
--- a/core/src/flex/messaging/services/messaging/package-info.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/selector/JMSSelector.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/selector/JMSSelector.java b/core/src/flex/messaging/services/messaging/selector/JMSSelector.java
deleted file mode 100644
index 3d680f9..0000000
--- a/core/src/flex/messaging/services/messaging/selector/JMSSelector.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging.selector;
-
-import javax.jms.InvalidSelectorException;
-import javax.jms.JMSException;
-
-import org.apache.activemq.command.ActiveMQMessage;
-import org.apache.activemq.filter.BooleanExpression;
-import org.apache.activemq.filter.MessageEvaluationContext;
-import org.apache.activemq.selector.SelectorParser;
-
-import flex.messaging.log.Log;
-import flex.messaging.log.LogCategories;
-import flex.messaging.messages.Message;
-
-/**
- * The JMSSelector is used to determine whether a message matches a given
- * SQL-92 selector expression.
- *
- * A prior implementation of this class borrowed heavily from Sun's
- * proprietary code, that eventually found its way into Glassfish. The license
- * was still CDDL (or CDDL+GPL) and therefore unfit for donation to Apache.
- *
- * The current implementation relies on Apache ActiveMQ to do the same. Since
- * the selector is evaluated against the message headers (called properties in
- * ActiveMQ parlance), and both ActiveMQ messages and Flex messages use a Map<String, Object>
- * to store the header-value pair, it is easy to create a minimally sufficient
- * ActiveMQMessage from a Flex message.
- *
- * Possible performance improvement: prevent creation of an ActiveMQMessage for each selector.
- * This isn't exactly a lightweight object but there seem to be only two choices at the moment:
- * a. Use a static field and synchronize access to it
- * OR
- * b. Instantiate a new ActiveMQMessage for each selector
- *
- * Re-using the same instance (approach a.) would entail calling clearProperties() followed
- * by setProperties() and that too by one thread at a time, which is why approach b. has been
- * chosen for now.
- *
- */
-public class JMSSelector
-{
- public static final String LOG_CATEGORY = LogCategories.MESSAGE_SELECTOR; // Because we're not always JMS-specific.
-
- private String pattern = null;
-
- /**
- * Class Constructor.
- *
- * @param pattern selector pattern
- */
- public JMSSelector(String pattern)
- {
- if (pattern == null)
- pattern = "";
-
- this.pattern = pattern;
- }
-
- /**
- * Matches the message against the selector expression.
- *
- * @param msg The message to match against.
- * @return true if the message headers match the selector; otherwise false.
- * @exception JMSSelectorException
- */
- public boolean match(Message msg) throws JMSSelectorException
- {
- if (pattern.equals(""))
- return true; // No selector
-
- boolean matched = false;
-
- try
- {
- // Parse selector pattern
- BooleanExpression expr = SelectorParser.parse(pattern);
-
- //Create a disposable ActiveMQMessage
- ActiveMQMessage dummyMessage = new ActiveMQMessage();
-
- // Populate dummyMessage from Flex message
- dummyMessage.setProperties(msg.getHeaders());
-
- // Set up an evaluation context
- MessageEvaluationContext context = new MessageEvaluationContext();
- context.setMessageReference(dummyMessage);
-
- // Check whether message (headers) matches selector expression
- matched = expr.matches(context);
-
- }
- catch (InvalidSelectorException e)
- {
- throw new JMSSelectorException(e);
- }
- catch (JMSException e)
- {
- throw new JMSSelectorException(e);
- }
- Log.getLogger(LOG_CATEGORY).debug("Selector: " + pattern + (matched ? " matched " : " did not match ") + " message with id: " + msg.getMessageId());
- return matched;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/selector/JMSSelectorException.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/selector/JMSSelectorException.java b/core/src/flex/messaging/services/messaging/selector/JMSSelectorException.java
deleted file mode 100644
index f69d32b..0000000
--- a/core/src/flex/messaging/services/messaging/selector/JMSSelectorException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging.selector;
-
-import flex.messaging.MessageException;
-
-/**
- * Exception type for JMSSelector errors.
- *
- *
- */
-public class JMSSelectorException extends MessageException
-{
- static final long serialVersionUID = -8886580147676036114L;
-
- public JMSSelectorException(Throwable t)
- {
- super(t) ;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/messaging/selector/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/messaging/selector/package-info.java b/core/src/flex/messaging/services/messaging/selector/package-info.java
deleted file mode 100644
index 266ff53..0000000
--- a/core/src/flex/messaging/services/messaging/selector/package-info.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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 flex.messaging.services.messaging.selector;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/services/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/services/package-info.java b/core/src/flex/messaging/services/package-info.java
deleted file mode 100644
index 7b724d3..0000000
--- a/core/src/flex/messaging/services/package-info.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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 flex.messaging.services;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/Assert.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/Assert.java b/core/src/flex/messaging/util/Assert.java
deleted file mode 100644
index a5f28a3..0000000
--- a/core/src/flex/messaging/util/Assert.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-/**
- * Simple assert class which provides functionality similar to the assert API
- * of JDK 1.4.
- *
- * Enable as follows:
- * java -Dassert
- *
- *
- */
-public class Assert
-{
- public static final boolean enableAssert = (System.getProperty("assert") != null);
-
-
- /**
- * If assertions are enabled and the passed in expression is false, throw an
- * AssertionFailedError.
- *
- * @param expr expression whose truth value is tested
- */
- public static void testAssertion(boolean expr)
- {
- if (enableAssert && !expr)
- {
- throw new AssertionFailedError();
- }
- }
-
- /**
- * If assertions are enabled and the passed in expression is false, throw an
- * AssertionFailedError with the passed in message.
- *
- * @param expr expression whose truth value is tested
- * @param message message contained in the AssertionFailedError when the expression
- * is false and assertions are enabled.
- */
- public static void testAssertion(boolean expr, String message)
- {
- if (enableAssert && !expr)
- {
- throw new AssertionFailedError(message);
- }
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/AssertionFailedError.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/AssertionFailedError.java b/core/src/flex/messaging/util/AssertionFailedError.java
deleted file mode 100644
index 5f9a154..0000000
--- a/core/src/flex/messaging/util/AssertionFailedError.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-/**
- *
- *
- */
-public class AssertionFailedError extends Error
-{
- static final long serialVersionUID = 6315002781136046939L;
-
- public AssertionFailedError()
- {
- }
-
- public AssertionFailedError(String message)
- {
- super(message);
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/Base64.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/Base64.java b/core/src/flex/messaging/util/Base64.java
deleted file mode 100644
index 547b491..0000000
--- a/core/src/flex/messaging/util/Base64.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-/**
- * Code to read and write Base64-encoded text.
- * Fairly special-purpose, not quite ready for
- * general streaming as they don't let you
- * drain less than everything that is currently
- * available.
- *
- *
- */
-public class Base64
-{
- private static final char alphabet[] =
- {
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
- 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
- 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
- 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
- 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
- 'w', 'x', 'y', 'z', '0', '1', '2', '3',
- '4', '5', '6', '7', '8', '9', '+', '/'
- };
-
- private static final int inverse[] =
- {
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
- 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,
- 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
- };
- /**
- *
- */
-
- public static class Decoder
- {
- private int filled = 0;
- private byte data[];
- private int count = 0;
- private int work[] = {0, 0, 0, 0};
-
-
- public Decoder()
- {
- data = new byte[256];
- }
-
- public void decode(String encoded)
- {
- int estimate = 1 + encoded.length() * 3 / 4;
-
- if (filled + estimate > data.length)
- {
- int length = data.length * 2;
- while (length < filled + estimate)
- {
- length *= 2;
- }
- byte[] newdata = new byte[length];
-
- System.arraycopy(data, 0, newdata, 0, filled);
- data = newdata;
- }
-
- for (int i = 0; i < encoded.length(); ++i)
- {
- char c = encoded.charAt(i);
-
- if (c == '=')
- work[count++] = -1;
- else if (inverse[c] != 64)
- work[count++] = inverse[c];
- else
- continue;
-
- if (count == 4)
- {
- count = 0;
- data[filled++] = (byte)((work[0] << 2) | ((work[1] & 0xff) >> 4));
-
- if (work[2] == -1)
- break;
-
- data[filled++] = (byte)((work[1] << 4) | ((work[2] & 0xff) >> 2));
-
- if (work[3] == -1)
- break;
-
- data[filled++] = (byte)((work[2] << 6) | work[3]);
- }
-
- }
- }
-
- public byte[] drain()
- {
- byte[] r = new byte[filled];
- System.arraycopy(data, 0, r, 0, filled);
- filled = 0;
- return r;
- }
-
- public byte[] flush() throws IllegalStateException
- {
- if (count > 0)
- throw new IllegalStateException("a partial block (" + count + " of 4 bytes) was dropped, decoded data is probably truncated!");
- return drain();
- }
-
- public void reset()
- {
- count = 0;
- filled = 0;
- }
-
- }
-
- /**
- *
- */
- public static class Encoder
- {
- private int work[] = {0, 0, 0};
- private int count = 0;
- private int line = 0;
- private StringBuffer output;
-
- public Encoder(int size)
- {
- output = new StringBuffer(size);
- }
-
- private void encodeBlock()
- {
- output.append(alphabet[(work[0] & 0xFF) >> 2]);
- output.append(alphabet[((work[0] & 0x03) << 4) | ((work[1] & 0xF0) >> 4)]);
- if (count > 1)
- output.append(alphabet[((work[1] & 0x0F) << 2) | ((work[2] & 0xC0) >> 6)]);
- else
- output.append('=');
-
- if (count > 2)
- output.append(alphabet[work[2] & 0x3F]);
- else
- output.append('=');
-
- if ((line += 4) == 76)
- {
- output.append('\n');
- line = 0;
- }
- }
-
- public void encode(byte[] data)
- {
- encode(data, 0, data.length);
- }
-
- public void encode(byte[] data, int offset, int length)
- {
- int plainIndex = offset;
-
- while (plainIndex < (offset + length))
- {
- work[count] = data[plainIndex];
- count++;
-
- if (count == work.length || ((offset + length) - plainIndex) == 1)
- {
- encodeBlock();
- count = 0;
- work[0] = 0;
- work[1] = 0;
- work[2] = 0;
- }
- plainIndex++;
- }
- }
-
- public String drain()
- {
- String r = output.toString();
- output.setLength(0);
- return r;
- }
-
- public String flush()
- {
- if (count > 0)
- encodeBlock();
-
- String r = drain();
- count = 0;
- line = 0;
- work[0] = 0;
- work[1] = 0;
- work[2] = 0;
- return r;
- }
-
-
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/ClassUtil.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/ClassUtil.java b/core/src/flex/messaging/util/ClassUtil.java
deleted file mode 100644
index f93080e..0000000
--- a/core/src/flex/messaging/util/ClassUtil.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-import flex.messaging.MessageException;
-import flex.messaging.io.SerializationContext;
-import flex.messaging.io.SerializationException;
-import flex.messaging.validators.DeserializationValidator;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-
-/**
- * Utility class to create instances of Complex Types
- * and handle error conditions consistently across the RemoteObject
- * code base.
- *
- *
- */
-public class ClassUtil
-{
- private static final int TYPE_NOT_FOUND = 10008;
- private static final int UNEXPECTED_TYPE = 10009;
- private static final int CANNOT_CREATE_TYPE = 10010;
- private static final int SECURITY_ERROR = 10011;
- private static final int UNKNOWN_ERROR = 10012;
-
- private static final String NULL = "null";
-
- private ClassUtil()
- {
- }
-
- /**
- * Create a class of the specified type.
- * Use {@link #createClass(String, ClassLoader)} and explicitly provide the MessageBroker class loader
- *
- * @param type fully qualified class name
- * @return the class instance
- */
- public static Class createClass(String type)
- {
- return createClass(type, null);
- }
-
- /**
- * Create a class of the specified type using the provided class loader.
- * @param type fully qualified class name
- * @param loader class loader, if null the class loader that loaded ClassUtil is used
- * @return the class instance
- */
- public static Class createClass(String type, ClassLoader loader)
- {
- try
- {
- if (type != null)
- type = type.trim();
-
- if (loader == null) // will use the loader for this class
- return Class.forName(type);
- return Class.forName(type, true, loader);
- }
- catch (ClassNotFoundException cnf)
- {
- // Cannot invoke type '{type}'
- MessageException ex = new MessageException();
- ex.setMessage(TYPE_NOT_FOUND, new Object[] {type});
- ex.setDetails(TYPE_NOT_FOUND, "0", new Object[] {type});
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- throw ex;
- }
- }
-
- /**
- * Creates the default instance of the class and verifies that it matches
- * with the expected class type, if one passed in.
- *
- * @param cls The class to create.
- * @param expectedInstance The expected class type.
- * @return The default instance of the class.
- */
- public static Object createDefaultInstance(Class cls, Class expectedInstance)
- {
- return ClassUtil.createDefaultInstance(cls, expectedInstance, false /*validate*/);
- }
-
- /**
- * Creates the default instance of the class and verifies that it matches
- * with the expected class type, if one passed in. It also validates the creation
- * of the instance with the deserialization validator, if one exists.
- *
- * @param cls The class to create.
- * @param expectedInstance The expected class type.
- * @param validate Controls whether the creation of the instance is validated
- * with the deserialization validator.
- * @return The default instance of the class.
- */
- public static Object createDefaultInstance(Class cls, Class expectedInstance, boolean validate)
- {
- if (validate)
- validateCreation(cls);
-
- String type = cls.getName();
- try
- {
- Object instance = cls.newInstance();
-
- if (expectedInstance != null && !expectedInstance.isInstance(instance))
- {
- // Given type '{name}' is not of expected type '{expectedName}'.
- MessageException ex = new MessageException();
- ex.setMessage(UNEXPECTED_TYPE, new Object[] {instance.getClass().getName(), expectedInstance.getName()});
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- throw ex;
- }
-
- return instance;
- }
- catch (IllegalAccessException ia)
- {
- boolean details = false;
- StringBuffer message = new StringBuffer("Unable to create a new instance of type ");
- message.append(type);
-
- //Look for a possible cause...
-
- // Class might not have a suitable constructor?
- if (!hasValidDefaultConstructor(cls))
- {
- details = true;
- }
-
- // Unable to create a new instance of type '{type}'.
- MessageException ex = new MessageException();
- ex.setMessage(CANNOT_CREATE_TYPE, new Object[] {type});
- if (details)
- {
- //Types must have a public, no arguments constructor
- ex.setDetails(CANNOT_CREATE_TYPE, "0");
- }
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- throw ex;
- }
- catch (InstantiationException ine)
- {
- String variant = null;
-
- //Look for a possible cause...
-
- if (cls.isInterface()) // Class is really an interface?
- variant = "1"; // Interfaces cannot be instantiated
- else if (isAbstract(cls))
- variant = "2"; //Abstract types cannot be instantiated.
- else if (!hasValidDefaultConstructor(cls)) // Class might not have a suitable constructor?
- variant = "3"; // Types cannot be instantiated without a public, no arguments constructor.
-
- MessageException ex = new MessageException();
- ex.setMessage(CANNOT_CREATE_TYPE, new Object[] {type});
- if (variant != null)
- ex.setDetails(CANNOT_CREATE_TYPE, variant);
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- throw ex;
- }
- catch (SecurityException se)
- {
- MessageException ex = new MessageException();
- ex.setMessage(SECURITY_ERROR, new Object[] {type});
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- ex.setRootCause(se);
- throw ex;
- }
- catch (MessageException me)
- {
- throw me;
- }
- catch (Exception e)
- {
- MessageException ex = new MessageException();
- ex.setMessage(UNKNOWN_ERROR, new Object[] {type});
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- ex.setRootCause(e);
- throw ex;
- }
- }
-
- public static boolean isAbstract(Class cls)
- {
- try
- {
- if (cls != null)
- {
- int mod = cls.getModifiers();
- return Modifier.isAbstract(mod);
- }
- }
- catch (Throwable t)
- {
- return false;
- }
-
- return false;
- }
-
- public static boolean hasValidDefaultConstructor(Class cls)
- {
- try
- {
- if (cls != null)
- {
- Constructor c = cls.getConstructor();
- int mod = c.getModifiers();
- return Modifier.isPublic(mod);
- }
- }
- catch (Throwable t)
- {
- return false;
- }
-
- return false;
- }
-
- public static String classLoaderToString(ClassLoader cl)
- {
- if (cl == null)
- return NULL;
-
- if (cl == ClassLoader.getSystemClassLoader())
- return "system";
-
- StringBuffer sb = new StringBuffer();
- sb.append("hashCode: " + System.identityHashCode(cl) + " (parent " + ClassUtil.classLoaderToString(cl.getParent()) + ")");
- return sb.toString();
- }
-
- /**
- * Validates the assignment of a value to an index of an Array or List instance
- * against the deserialization validator. If the assignment is not valid,
- * SerializationException is thrown.
- *
- * @param obj The Array or List instance.
- * @param index The index at which the value is being assigned.
- * @param value The value that is assigned to the index.
- */
- public static void validateAssignment(Object obj, int index, Object value)
- {
- SerializationContext context = SerializationContext.getSerializationContext();
- DeserializationValidator validator = context.getDeserializationValidator();
- if (validator == null)
- return;
-
- boolean valid = true;
- try
- {
- valid = validator.validateAssignment(obj, index, value);
- }
- catch (Exception e)
- {
- // Assignment validation of the object with type '{0}' for the index '{1}' failed.
- SerializationException se = new SerializationException();
- se.setMessage(10313, new Object[]{obj == null? NULL : obj.getClass().getName(), index});
- se.setRootCause(e);
- throw se;
- }
- if (!valid)
- {
- SerializationException se = new SerializationException();
- se.setMessage(10313, new Object[]{obj == null? NULL : obj.getClass().getName(), index});
- throw se;
- }
- }
-
- /**
- * Validates the assignment of a property of an instance of a class to a value
- * against the deserialization validator. If the assignment is not valid,
- * SerializationException is thrown.
- *
- * @param obj The class instance whose property is being assigned to a value.
- * @param propName The name of the property that is being assigned.
- * @param value The value that the property is being assigned to.
- */
- public static void validateAssignment(Object obj, String propName, Object value)
- {
- SerializationContext context = SerializationContext.getSerializationContext();
- DeserializationValidator validator = context.getDeserializationValidator();
- if (validator == null)
- return;
-
- boolean valid = true;
- try
- {
- valid = validator.validateAssignment(obj, propName, value);
- }
- catch (Exception e)
- {
- // Assignment validation of the object with type '{0}' for the property '{1}' failed.
- SerializationException se = new SerializationException();
- se.setMessage(10312, new Object[]{obj == null? NULL : obj.getClass().getName(), propName});
- se.setRootCause(e);
- throw se;
- }
- if (!valid)
- {
- SerializationException se = new SerializationException();
- se.setMessage(10312, new Object[]{obj == null? NULL : obj.getClass().getName(), propName});
- throw se;
- }
- }
-
- /**
- * Validates the creation of the class instance against the deserialization
- * validator, if one exists. If the class creation is not valid,
- * SerializationException is thrown.
- *
- * @param cls The class to validate.
- */
- public static void validateCreation(Class<?> cls)
- {
- SerializationContext context = SerializationContext.getSerializationContext();
- DeserializationValidator validator = context.getDeserializationValidator();
- if (validator == null)
- return;
-
- boolean valid = true;
- try
- {
- valid = validator.validateCreation(cls);
- }
- catch (Exception e)
- {
- // Creation validation for class '{0}' failed.
- SerializationException se = new SerializationException();
- se.setMessage(10311, new Object[]{cls == null? NULL : cls.getName()});
- se.setRootCause(e);
- throw se;
- }
- if (!valid)
- {
- // Creation validation for class '{0}' failed.
- SerializationException se = new SerializationException();
- se.setMessage(10311, new Object[]{cls == null? NULL : cls.getName()});
- throw se;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/Diag.jsl
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/Diag.jsl b/core/src/flex/messaging/util/Diag.jsl
deleted file mode 100644
index f84c960..0000000
--- a/core/src/flex/messaging/util/Diag.jsl
+++ /dev/null
@@ -1,34 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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 flex.messaging.util;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-public class Diag
-{
- public static void TraceException(Throwable e, String txt)
- {
- System.Diagnostics.Trace.WriteLine("Exception: " + txt);
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- e.printStackTrace(pw);
- System.Diagnostics.Trace.WriteLine(sw);
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/DoubleUtil.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/DoubleUtil.java b/core/src/flex/messaging/util/DoubleUtil.java
deleted file mode 100644
index 19dfbc8..0000000
--- a/core/src/flex/messaging/util/DoubleUtil.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-/**
- *
- */
-public class DoubleUtil
-{
- /**
- *
- */
- public static long doubleToRawLongBits(double d)
- {
- return Double.doubleToRawLongBits(d);
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/DoubleUtil.jsl
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/DoubleUtil.jsl b/core/src/flex/messaging/util/DoubleUtil.jsl
deleted file mode 100644
index 97b959c..0000000
--- a/core/src/flex/messaging/util/DoubleUtil.jsl
+++ /dev/null
@@ -1,27 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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 flex.messaging.util;
-
-public class DoubleUtil
-{
- public static long doubleToRawLongBits(double d)
- {
- return System.BitConverter.DoubleToInt64Bits(d);
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/Hex.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/Hex.java b/core/src/flex/messaging/util/Hex.java
deleted file mode 100644
index a48fac8..0000000
--- a/core/src/flex/messaging/util/Hex.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-/**
- * Code to read and write Base64-encoded text.
- * Fairly special-purpose, not quite ready for
- * general streaming as they don't let you
- * drain less than everything that is currently
- * available.
- *
- *
- */
-public class Hex
-{
- private static final char digits[] =
- {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
- };
- /**
- *
- */
- public static class Decoder
- {
- private int filled = 0;
- private byte data[];
- private int work[] = {0, 0};
-
-
- public Decoder()
- {
- data = new byte[256];
- }
-
- public void decode(String encoded)
- {
-
- int estimate = 1 + encoded.length() / 2;
-
- if (filled + estimate > data.length)
- {
- int length = data.length * 2;
- while (length < filled + estimate)
- {
- length *= 2;
- }
- byte[] newdata = new byte[length];
-
- System.arraycopy(data, 0, newdata, 0, filled);
- data = newdata;
- }
-
- for (int i = 0; i < encoded.length(); ++i)
- {
- work[0] = Character.digit(encoded.charAt(i), 16);
- i++;
- work[1] = Character.digit(encoded.charAt(i), 16);
- data[filled++] = (byte) (((work[0] << 4) | (work[1])) & 0xff);
- }
- }
-
- public byte[] drain()
- {
- byte[] r = new byte[filled];
- System.arraycopy(data, 0, r, 0, filled);
- filled = 0;
- return r;
- }
-
- public byte[] flush() throws IllegalStateException
- {
- return drain();
- }
-
- public void reset()
- {
- filled = 0;
- }
-
- }
-
- /**
- *
- */
- public static class Encoder
- {
- private StringBuffer output;
-
- public Encoder(int size)
- {
- output = new StringBuffer(size * 2);
- }
-
- private void encodeBlock(byte work)
- {
- output.append(digits[(work & 0xF0) >>> 4]);
- output.append(digits[(work & 0x0F)]);
- }
-
- public void encode(byte[] data)
- {
- encode(data, 0, data.length);
- }
-
- public void encode(byte[] data, int offset, int length)
- {
- int plainIndex = offset;
-
- while (plainIndex < (offset + length))
- {
- encodeBlock(data[plainIndex]);
- plainIndex++;
- }
- }
-
- public String drain()
- {
- String r = output.toString();
- output.setLength(0);
- return r;
- }
-
- public String flush()
- {
- return drain();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/MethodKey.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/MethodKey.java b/core/src/flex/messaging/util/MethodKey.java
deleted file mode 100644
index d2eb7dc..0000000
--- a/core/src/flex/messaging/util/MethodKey.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-import java.util.Arrays;
-
-/**
- * Utility class used as a key into collections of Remote Object methods. The
- * key consists of the Remote Object class containing this method, the method name,
- * and the classes representing the parameters in the signature of this method.
- *
- *
- */
-public class MethodKey
-{
- private Class enclosingClass;
- private String methodName;
- private Class[] parameterTypes;
-
- /**
- * Constructor.
- *
- * @param enclosingClass remote Ooject class containing this method
- * @param methodName method name
- * @param parameterTypes classes representing the parameters in the signature of this method
- */
- public MethodKey(Class enclosingClass, String methodName, Class[] parameterTypes)
- {
- this.enclosingClass = enclosingClass;
- this.methodName = methodName;
- this.parameterTypes = parameterTypes;
- }
-
- /** {@inheritDoc} */
- public boolean equals(Object object)
- {
- boolean result;
- if (this == object)
- {
- result = true;
- }
- else if (object instanceof MethodKey)
- {
- MethodKey other = (MethodKey) object;
- result =
- other.methodName.equals(this.methodName) &&
- other.parameterTypes.length == this.parameterTypes.length &&
- other.enclosingClass == this.enclosingClass &&
- Arrays.equals(other.parameterTypes, this.parameterTypes);
- }
- else
- {
- result = false;
- }
- return result;
- }
-
- /** {@inheritDoc} */
- public int hashCode()
- {
- // Don't consider parameter types in hashcode to speed up
- // calculation.
- return enclosingClass.hashCode() * 10003 +
- methodName.hashCode();
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/flex/messaging/util/MethodMatcher.java
----------------------------------------------------------------------
diff --git a/core/src/flex/messaging/util/MethodMatcher.java b/core/src/flex/messaging/util/MethodMatcher.java
deleted file mode 100644
index 6430a30..0000000
--- a/core/src/flex/messaging/util/MethodMatcher.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * 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 flex.messaging.util;
-
-import flex.messaging.io.TypeMarshaller;
-import flex.messaging.io.TypeMarshallingContext;
-import flex.messaging.MessageException;
-
-import java.util.Map;
-import java.util.HashMap;
-import java.util.List;
-import java.lang.reflect.Method;
-
-/**
- * A utility class used to find a suitable method based on matching
- * signatures to the types of set of arguments. Since the arguments
- * may be from more loosely typed environments such as ActionScript,
- * a translator can be employed to handle type conversion. Note that
- * there isn't a great guarantee for which method will be selected
- * when several overloaded methods match very closely through the use
- * of various combinations of generic types.
- *
- *
- */
-public class MethodMatcher
-{
- private final Map<MethodKey, Method> methodCache = new HashMap<MethodKey, Method>();
- private static final int ARGUMENT_CONVERSION_ERROR = 10006;
- private static final int CANNOT_INVOKE_METHOD = 10007;
-
- /**
- * Default constructor.
- */
- public MethodMatcher()
- {
- }
-
- /**
- * Utility method that searches a class for a given method, taking
- * into account the supplied parameters when evaluating overloaded
- * method signatures.
- *
- * @param c The class.
- * @param methodName Desired method to search for
- * @param parameters Required to distinguish between overloaded methods of the same name
- * @return The best-match <tt>Method</tt>.
- */
- public Method getMethod(Class c, String methodName, List parameters)
- {
- // Keep track of the best method match found
- Match bestMatch = new Match(methodName);
-
- // Determine supplied parameter types.
- Class[] suppliedParamTypes = paramTypes(parameters);
-
- // Create a key to search our method cache
- MethodKey methodKey = new MethodKey(c, methodName, suppliedParamTypes);
-
- Method method = null;
- if (methodCache.containsKey(methodKey))
- {
- method = methodCache.get(methodKey);
-
- String thisMethodName = method.getName();
- bestMatch.matchedMethodName = thisMethodName;
- }
- else
- {
- try // First, try an exact match.
- {
- method = c.getMethod(methodName, suppliedParamTypes);
- synchronized(methodCache)
- {
- Method method2 = methodCache.get(methodKey);
- if (method2 == null)
- methodCache.put(methodKey, method);
- else
- method = method2;
- }
- }
- catch (SecurityException e)
- {
- // NOWARN
- }
- catch (NoSuchMethodException e)
- {
- // NOWARN
- }
-
- if (method == null) // Otherwise, search the long way.
- {
- Method[] methods = c.getMethods();
- for (Method thisMethod : c.getMethods())
- {
- String thisMethodName = thisMethod.getName();
-
- // FIXME: Do we want to do this case-insensitively in Flex 2.0?
- // First, search by name; for backwards compatibility
- // we continue to check case-insensitively
- if (!thisMethodName.equalsIgnoreCase(methodName))
- continue;
-
- // Next, search on params
- Match currentMatch = new Match(methodName);
- currentMatch.matchedMethodName = thisMethodName;
-
- // If we've not yet had a match, this is our best match so far.
- if (bestMatch.matchedMethodName == null)
- bestMatch = currentMatch;
-
- // Number of parameters must match.
- Class[] desiredParamTypes = thisMethod.getParameterTypes();
- currentMatch.methodParamTypes = desiredParamTypes;
-
- if (desiredParamTypes.length != suppliedParamTypes.length)
- continue;
-
- currentMatch.matchedByNumberOfParams = true;
-
- // If we've not yet matched any params, this is our best match so far.
- if (!bestMatch.matchedByNumberOfParams && bestMatch.matchedParamCount == 0)
- bestMatch = currentMatch;
-
- // Parameter types must also be compatible. Don't actually convert
- // the parameter just yet, only count the matches and exact matches.
- convertParams(parameters, desiredParamTypes, currentMatch, false);
-
- // If we've not yet had this many params match, this is our best match so far.
- if (currentMatch.matchedParamCount >= bestMatch.matchedParamCount
- && currentMatch.exactMatchedParamCount >= bestMatch.exactMatchedParamCount)
- bestMatch = currentMatch;
-
- // If all types were compatible, we have a match.
- if (currentMatch.matchedParamCount == desiredParamTypes.length
- && bestMatch == currentMatch)
- {
- method = thisMethod;
- synchronized(methodCache)
- {
- Method method2 = methodCache.get(methodKey);
- if (method2 == null || method2 != method)
- methodCache.put(methodKey, method);
- else
- method = method2;
- }
- // Don't break as there might be other methods with the
- // same number of arguments but with better match count.
- // break;
- }
- }
- }
- }
-
- if (method == null)
- {
- methodNotFound(methodName, suppliedParamTypes, bestMatch);
- }
- else if (bestMatch.paramTypeConversionFailure != null)
- {
- //Error occurred while attempting to convert an input argument's type.
- MessageException me = new MessageException();
- me.setMessage(ARGUMENT_CONVERSION_ERROR);
- me.setCode("Server.Processing");
- me.setRootCause(bestMatch.paramTypeConversionFailure);
- throw me;
- }
-
- // Call convertParams one last time before returning method. This ensures
- // that parameters List is converted using bestMatch.
- Class<?>[] desiredParamTypes = method.getParameterTypes();
- bestMatch.methodParamTypes = desiredParamTypes;
- convertParams(parameters, desiredParamTypes, bestMatch, true);
- return method;
- }
-
-
- /**
- * Utility method to convert a collection of parameters to desired types. We keep track
- * of the progress of the conversion to allow callers to gauge the success of the conversion.
- * This is important for ranking overloaded-methods and debugging purposes.
- *
- * @param parameters actual parameters for an invocation
- * @param desiredParamTypes classes in the signature of a potential match for the invocation
- * @param currentMatch the currently best known match
- * @param convert determines whether the actual conversion should take place.
- */
- public static void convertParams(List parameters, Class[] desiredParamTypes, Match currentMatch, boolean convert)
- {
- int matchCount = 0;
- int exactMatchCount = 0;
-
- currentMatch.matchedParamCount = 0;
- currentMatch.convertedSuppliedTypes = new Class[desiredParamTypes.length];
-
- TypeMarshaller marshaller = TypeMarshallingContext.getTypeMarshaller();
-
- for (int i = 0; i < desiredParamTypes.length; i++)
- {
- Object param = parameters.get(i);
-
- // Consider null param to match
- if (param != null)
- {
- Object obj = null;
- Class objClass = null;
-
- if (marshaller != null)
- {
- try
- {
- obj = marshaller.convert(param, desiredParamTypes[i]);
- }
- catch (MessageException ex)
- {
- currentMatch.paramTypeConversionFailure = ex;
- break;
- }
- catch (ClassCastException ex)
- {
- currentMatch.paramTypeConversionFailure = ex;
- break;
- }
- // We need to catch the exception here as the conversion of parameter types could fail
- catch(Exception e)
- {
- currentMatch.paramTypeConversionFailure = e;
- break;
- }
- }
- else
- {
- obj = param;
- }
-
- currentMatch.convertedSuppliedTypes[i] = (obj != null ? (objClass = obj.getClass()) : null);
-
- // Things match if we now have an object which is assignable from the
- // method param class type or if we have an Object which corresponds to
- // a primitive
- if (objClass != null && isAssignableFrom(desiredParamTypes[i], objClass))
- {
- // See if there's an exact match before parameter is converted.
- if (isAssignableFrom(desiredParamTypes[i], param.getClass()))
- exactMatchCount++;
-
- if (convert) // Convert the parameter.
- parameters.set(i, obj);
-
- matchCount++;
- }
- else
- {
- break;
- }
- }
- else
- {
- matchCount++;
- }
- }
-
- currentMatch.matchedParamCount = matchCount;
- currentMatch.exactMatchedParamCount = exactMatchCount;
- }
-
- private static boolean isAssignableFrom(Class first, Class second)
- {
- return (first.isAssignableFrom(second)) ||
- (first == Integer.TYPE && Integer.class.isAssignableFrom(second)) ||
- (first == Double.TYPE && Double.class.isAssignableFrom(second)) ||
- (first == Long.TYPE && Long.class.isAssignableFrom(second)) ||
- (first == Boolean.TYPE && Boolean.class.isAssignableFrom(second)) ||
- (first == Character.TYPE && Character.class.isAssignableFrom(second)) ||
- (first == Float.TYPE && Float.class.isAssignableFrom(second)) ||
- (first == Short.TYPE && Short.class.isAssignableFrom(second)) ||
- (first == Byte.TYPE && Byte.class.isAssignableFrom(second));
- }
-
- /**
- * Utility method that iterates over a collection of input
- * parameters to determine their types while logging
- * the class names to create a unique identifier for a
- * method signature.
- *
- * @param parameters - A list of supplied parameters.
- * @return An array of <tt>Class</tt> instances indicating the class of each corresponding parameter.
- *
- */
- public static Class[] paramTypes(List parameters)
- {
- Class[] paramTypes = new Class[parameters.size()];
- for (int i = 0; i < paramTypes.length; i++)
- {
- Object p = parameters.get(i);
- paramTypes[i] = p == null ? Object.class : p.getClass();
- }
- return paramTypes;
- }
-
- /**
- * Utility method to provide more detailed information in the event that a search
- * for a specific method failed for the service class.
- *
- * @param methodName the name of the missing method
- * @param suppliedParamTypes the types of parameters supplied for the search
- * @param bestMatch the best match found during the search
- */
- public static void methodNotFound(String methodName, Class[] suppliedParamTypes, Match bestMatch)
- {
- // Set default error message...
- // Cannot invoke method '{methodName}'.
- int errorCode = CANNOT_INVOKE_METHOD;
- Object[] errorParams = new Object[]{methodName};
- String errorDetailVariant = "0";
- // Method '{methodName}' not found.
- Object[] errorDetailParams = new Object[]{methodName};
-
- if (bestMatch.matchedMethodName != null)
- {
- // Cannot invoke method '{bestMatch.matchedMethodName}'.
- errorCode = CANNOT_INVOKE_METHOD;
- errorParams = new Object[]{bestMatch.matchedMethodName};
-
- int suppliedParamCount = suppliedParamTypes.length;
- int expectedParamCount = bestMatch.methodParamTypes != null ? bestMatch.methodParamTypes.length : 0;
-
- if (suppliedParamCount != expectedParamCount)
- {
- // {suppliedParamCount} arguments were sent but {expectedParamCount} were expected.
- errorDetailVariant = "1";
- errorDetailParams = new Object[]{new Integer(suppliedParamCount), new Integer(expectedParamCount)};
-
- }
- else
- {
- String suppliedTypes = bestMatch.listTypes(suppliedParamTypes);
- String convertedTypes = bestMatch.listConvertedTypes();
- String expectedTypes = bestMatch.listExpectedTypes();
-
- if (expectedTypes != null)
- {
- if (suppliedTypes != null)
- {
- if (convertedTypes != null)
- {
- // The expected argument types are ({expectedTypes})
- // but the supplied types were ({suppliedTypes})
- // and converted to ({convertedTypes}).
- errorDetailVariant = "2";
- errorDetailParams = new Object[]{expectedTypes, suppliedTypes, convertedTypes};
- }
- else
- {
- // The expected argument types are ({expectedTypes})
- // but the supplied types were ({suppliedTypes})
- // with none successfully converted.
- errorDetailVariant = "3";
- errorDetailParams = new Object[]{expectedTypes, suppliedTypes};
- }
- }
- else
- {
- // The expected argument types are ({expectedTypes})
- // but no arguments were provided.
- errorDetailVariant = "4";
- errorDetailParams = new Object[]{expectedTypes};
- }
- }
- else
- {
- // No arguments were expected but the following types were supplied (suppliedTypes)
- errorDetailVariant = "5";
- errorDetailParams = new Object[]{suppliedTypes};
- }
- }
- }
-
- MessageException ex = new MessageException();
- ex.setMessage(errorCode, errorParams);
- ex.setCode(MessageException.CODE_SERVER_RESOURCE_UNAVAILABLE);
- if (errorDetailVariant != null)
- ex.setDetails(errorCode, errorDetailVariant, errorDetailParams);
-
- if (bestMatch.paramTypeConversionFailure != null)
- ex.setRootCause(bestMatch.paramTypeConversionFailure);
-
- throw ex;
- }
-
- /**
- * A utility class to help rank methods in the search
- * for a best match, given a name and collection of
- * input parameters.
- *
- */
- public static class Match
- {
- /**
- * Constructor.
- * @param name the name of the method to match
- */
- public Match(String name)
- {
- this.methodName = name;
- }
-
- /**
- * Returns true if desired and found method names match.
- * @return true if desired and found method names match
- */
- public boolean matchedExactlyByName()
- {
- return matchedMethodName != null? matchedMethodName.equals(methodName) : false;
- }
-
- /**
- * Returns true if desired and found method names match only when case is ignored.
- * @return true if desired and found method names match only when case is ignored
- */
- public boolean matchedLooselyByName()
- {
- return matchedMethodName != null?
- (!matchedExactlyByName() && matchedMethodName.equalsIgnoreCase(methodName)) : false;
- }
-
-
- /**
- * Lists the classes in the signature of the method matched.
- * @return the classes in the signature of the method matched
- */
- public String listExpectedTypes()
- {
- return listTypes(methodParamTypes);
- }
-
-
- /**
- * Lists the classes corresponding to actual invocation parameters once they have been
- * converted as best they could to match the classes in the invoked method's signature.
- *
- * @return the classes corresponding to actual invocation parameters once they have been
- * converted as best they could to match the classes in the invoked method's signature
- */
- public String listConvertedTypes()
- {
- return listTypes(convertedSuppliedTypes);
- }
-
- /**
- * Creates a string representation of the class names in the array of types passed into
- * this method.
- *
- * @param types an array of types whose names are to be listed
- * @return a string representation of the class names in the array of types
- */
- public String listTypes(Class[] types)
- {
- if (types == null || types.length == 0)
- return null;
-
- StringBuffer sb = new StringBuffer();
-
- for (int i = 0; i < types.length; i++)
- {
- if (i > 0)
- sb.append(", ");
-
- Class c = types[i];
-
- if (c != null)
- {
- if (c.isArray())
- {
- c = c.getComponentType();
- sb.append(c.getName()).append("[]");
- }
- else
- {
- sb.append(c.getName());
- }
- }
- else
- {
- sb.append("null");
- }
- }
-
- return sb.toString();
- }
-
- final String methodName;
- String matchedMethodName;
-
- boolean matchedByNumberOfParams;
- int matchedParamCount;
- int exactMatchedParamCount;
- Class[] methodParamTypes;
- Class[] convertedSuppliedTypes;
- Exception paramTypeConversionFailure;
- }
-}