ParticipantStepChooser implementation: WorkItem#getCurrentAssignee and deprecated API?
I'm currently implementing various workflow steps. When working on the ParticipantStepChooser implementation, i wonder why assignment of the next workflow step is not reflected in the WorkItem#getCurrentAssignee.
Also, various classes from com.day.cq.security are declared as deprecated, like Authorizable, Group and User. Now, those are some very "interessting" types, which are more then central. How can i access the new types easily and when ill the association be fixed?
Kind regards and thanx in advance.
one of the workaround is by adding -XX:-UseSplitVerifier option to the JVM .This issue seems to be an with CQ 5.6 and java 7
Similar Messages
-
Deprecated API and RFC connection issues in PI 7.1
Hi all,
I am new to this Forum..
I am working in File to Proxy scenario where i am using UDF to implemnt few functions.
But i am getting the following Error :
Source text of object Message Mapping: MM_FILE_10_943 | urn://fiat.com/mm/if_10_943 has syntax errors:
Function sendMonitor, Line 14:
cannot find symbol symbol : class CallRFCManager location: class com.sap.xi.tf._MM_FILE_10_943_ CallRFCManager rfc=new CallRFCManager(); ^
Function sendMonitor, Line 14:
cannot find symbol symbol : class CallRFCManager location: class com.sap.xi.tf._MM_FILE_10_943_ CallRFCManager rfc=new CallRFCManager(); ^
Function sendMonitor, Line 17:
cannot find symbol symbol : variable Constants location: class com.sap.xi.tf._MM_FILE_10_943_ if(rfc.connect(Constants.XISYSTEM)){ ^ Note: /disk2/sap/TX0/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Map9c6141de40a611e0ad290000003d38da/source/com/sap/xi/tf/_MM_FILE_10_943_.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: /disk2/sap/TX0/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Map9c6141de40a611e0ad290000003d38da/source/com/sap/xi/tf/_MM_FILE_10_943_.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 3 errors
The code i am using is:
//write your code here
// INPUT: activate ; id; descrizione
AbstractTrace trace;
String messID;
java.util.Map map;
trace = container.getTrace();
map = container.getTransformationParameters();
messID = (String) map.get(StreamTransformationConstants.MESSAGE_ID);
CallRFCManager rfc=new CallRFCManager();
if (a.equals("true")){
if(rfc.connect(Constants.XISYSTEM)){
try{
rfc.traceMonitor(messID,b,c);
trace.addInfo("Ok trace monitor");
rfc.disconnect();
} catch (Exception ex) {
trace.addInfo("Errore in sendMonitor CAUSA:" + ex.getMessage());
rfc.disconnect();
}else{
trace.addInfo("Errore in sendMonitor CAUSA: errore sulla connessione ad XI");
return a;
Pleasae help me ....what is the reason for this ???Hi ,
the package com.fiat.sapiens.udf.* is saved in the IA_JAVA.zip file.
I imported it in the imported archive and added this jar in the import tab of function library
i also added ti in the archive used tab in function.
But still it is showing this Error.
under IA_JAVA.zip i have testJCO.java which has the folowing code:
package com.fiat.sapiens.xi.udf;
// Referenced classes of package com.fiat.sapiens.xi.udf:
// CallRFCManager
public class TestJCO
public TestJCO()
public static void main(String args[])
System.setProperty("SAPSYSTEMNAME", "DX0");
CallRFCManager rfc = new CallRFCManager();
rfc.connect("XI");
try
rfc.schedNR("10", "20", "30", "40", "50", "60");
catch(Exception e1)
e1.printStackTrace();
if(rfc.connect())
rfc.connect();
try
String a = rfc.checkRARCRE("ZZ");
System.out.println(a);
catch(Exception e)
e.printStackTrace();
System.out.println(""); -
Apt and its API deprecated as of JDK 7 build 68
Here ye, here he, apt users!
As of JDK 7 build 68, apt and its API are deprecated and both are planned for removal in the next major JDK release following JDK 7.
As the lead engineer for both apt and the standardized annotation processing in JSR 269, the JSR 269 API and tool experience with javac should be uniformly better than apt; the newer API is easier to use, more flexible, and should run faster as well. I unconditionally recommend transitioning to the JSR 269 API and javac for all your annotation processing needs.
More information on transitioning from apt to javac can be found in this blog entry:
http://blogs.sun.com/darcy/entry/an_apt_replacementGreat to see that you posted the information here.
-
Deprecated API compilation error
Please help. Attached is my source code. I'm receiving a compilation error that reads 'RnrBooksApp.java uses or overrides a deprecated API. Recompile with -deprecation for details.' I'm very new to Java, so I appreciate any assistance. Thank you!
//ClassName: RnrBooksApp
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
public class RnrBooksApp extends Frame implements ItemListener, ActionListener
//Declare database variables
Connection conBook;
Statement cmdBook;
ResultSet rsBook;
boolean blnSuccessfulOpen = false;
//Declare components
Choice lstBooks = new Choice();
TextField txtISBN = new TextField(13);
TextField txtTitle = new TextField(50);
TextField txtAuthor = new TextField(30);
TextField txtPublisher = new TextField(30);
Button btnAdd = new Button("Add");
//Button btnUpdate = new Button("Update");
Button btnEdit = new Button("Save");
Button btnCancel = new Button("Cancel");
Button btnDelete = new Button("Delete");
Label lblMessage = new Label(" ");
public static void main(String args[])
//Declare an instance of this application
RnrBooksApp thisApp = new RnrBooksApp();
thisApp.createInterface();
public void createInterface()
//Load the database and set up the frame
loadDatabase();
if (blnSuccessfulOpen)
//Set up frame
setTitle("Books Database");
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent event)
stop();
System.exit(0);
setLayout(new BorderLayout());
//Set up top panel
Panel pnlTop = new Panel(new GridLayout(2, 2, 10, 10));
pnlTop.add(new Label("ISBN"));
lstBooks.insert("Select a Book to Display", 0);
lstBooks.addItemListener(this);
pnlTop.add(lstBooks);
pnlTop.add(new Label(" "));
add(pnlTop, "North");
//Set up center panel
Panel pnlMiddle = new Panel(new GridLayout(5, 2, 10, 10));
pnlMiddle.getInsets();
pnlMiddle.add(new Label("ISBN"));
pnlMiddle.add(txtISBN);
pnlMiddle.add(new Label("Title"));
pnlMiddle.add(txtTitle);
pnlMiddle.add(new Label("Author"));
pnlMiddle.add(txtAuthor);
pnlMiddle.add(new Label("Publisher"));
pnlMiddle.add(txtPublisher);
setTextToNotEditable();
Panel pnlLeftButtons = new Panel(new GridLayout(0, 2, 10, 10));
Panel pnlRightButtons = new Panel(new GridLayout(0, 2, 10, 10));
pnlLeftButtons.add(btnAdd);
btnAdd.addActionListener(this);
pnlLeftButtons.add(btnEdit);
btnEdit.addActionListener(this);
pnlRightButtons.add(btnDelete);
btnDelete.addActionListener(this);
pnlRightButtons.add(btnCancel);
btnCancel.addActionListener(this);
btnCancel.setEnabled(false);
pnlMiddle.add(pnlLeftButtons);
pnlMiddle.add(pnlRightButtons);
add(pnlMiddle, "Center");
//Set up bottom panel
add(lblMessage, "South");
lblMessage.setForeground(Color.red);
//Display the frame
setSize(400, 300);
setVisible(true);
else
stop(); //Close any open connection
System.exit(-1); //Exit with error status
public Insets insets()
//Set frame insets
return new Insets(40, 15, 15, 15);
public void loadDatabase()
try
//Load the Sun drivers
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException err)
try
//Load the Microsoft drivers
Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException error)
System.err.println("Drivers did not load properly");
try
//Connect to the database
conBook = DriverManager.getConnection("jdbc:odbc:Book");
//Create a ResultSet
cmdBook = conBook.createStatement();
rsBook = cmdBook.executeQuery(
"Select * from Book;");
loadBooks(rsBook);
blnSuccessfulOpen = true;
catch(SQLException error)
System.err.println("Error: " + error.toString());
public void loadBooks(ResultSet rsBook)
//Fill ISBN list box
try
while(rsBook.next())
lstBooks.add(rsBook.getString("ISBN"));
catch (SQLException error)
System.err.println("Error in Display Record." + "Error: " + error.toString());
public void itemStateChanged(ItemEvent event)
//Retrieve and display the selected record
String strISBN = lstBooks.getSelectedItem();
lblMessage.setText(""); //Delete instructions
try
rsBook = cmdBook.executeQuery(
"Select * from Book where [ISBN] = '"
+ strISBN + "';");
txtISBN.setText(strISBN);
displayRecord(rsBook);
setTextToEditable();
catch(SQLException error)
lblMessage.setText("Error in result set. " + "Error: " + error.toString());
public void displayRecord(ResultSet rsBook)
//Display the current record
try
if(rsBook.next())
txtTitle.setText(rsBook.getString("Title"));
txtAuthor.setText(rsBook.getString("Author"));
txtPublisher.setText(rsBook.getString("Publisher"));
lblMessage.setText("");
else
lblMessage.setText("Record not found");
clearTextFields();
catch (SQLException error)
lblMessage.setText("Error: " + error.toString());
public void actionPerformed(ActionEvent event)
//Test the command buttons
Object objSource = event.getSource();
if(objSource == btnAdd && event.getActionCommand () == "Add")
Add();
else if (objSource == btnAdd)
Save();
else if(objSource == btnEdit)
Edit();
else if(objSource == btnDelete)
Delete();
else if(objSource == btnCancel)
Cancel();
public void setTextToNotEditable()
//Lock the text fields
txtISBN.setEditable(false);
txtTitle.setEditable(false);
txtAuthor.setEditable(false);
txtPublisher.setEditable(false);
public void setTextToEditable()
//Unlock the text fields
txtISBN.setEditable(true);
txtTitle.setEditable(true);
txtAuthor.setEditable(true);
txtPublisher.setEditable(true);
public void clearTextFields()
//Clear the text fields
txtISBN.setText("");
txtTitle.setText("");
txtAuthor.setText("");
txtPublisher.setText("");
public void Add()
//Add a new record
lblMessage.setText(" "); //Clear previous message
setTextToEditable(); //Unlock the text fields
clearTextFields(); //Clear text field contents
txtISBN.requestFocus ();
//Set up the OK and Cancel buttons
btnAdd.setLabel("OK");
btnCancel.setEnabled(true);
//Disable the Delete and Edit buttons
btnDelete.setEnabled(false);
btnEdit.setEnabled(false);
public void Save()
//Save the new record
// Activated when the Add button has an "OK" label
if (txtISBN.getText().length ()== 0 || txtAuthor.getText().length() == 0)
lblMessage.setText("The ISBN or Author is blank");
else
try
cmdBook.executeUpdate("Insert Into Book "
+ "([ISBN], [Title], [Author], [Publisher]) "
+ "Values('"
+ txtISBN.getText() + "', '"
+ txtTitle.getText() + "', '"
+ txtAuthor.getText() + "', '"
+ txtPublisher.getText() + "')");
//Add to name list
lstBooks.add(txtISBN.getText());
//Reset buttons
Cancel();
catch(SQLException error)
lblMessage.setText("Error: " + error.toString());
public void Delete()
//Delete the current record
int intIndex = lstBooks.getSelectedIndex();
String strISBN = lstBooks.getSelectedItem();
if(intIndex == 0) //Make sure a record is selected
//Position 0 holds a text message
lblMessage.setText("Please select the record to be deleted");
else
//Delete the record from the database
try
cmdBook.executeUpdate(
"Delete from Book where [ISBN] = '" + strISBN + "';");
clearTextFields(); //Delete from screen
lstBooks.remove(intIndex); //Delete from list
lblMessage.setText("Record deleted"); //Display message
catch(SQLException error)
lblMessage.setText("Error during Delete."
+ "Error: " + error.toString());
public void Cancel()
//Enable the Delete and Edit buttons
btnDelete.setEnabled(true);
btnEdit.setEnabled(true);
//Disable the Cancel button
btnCancel.setEnabled(false);
//Change caption of button
btnAdd.setLabel("Add");
//Clear the text fields and status bar
clearTextFields();
lblMessage.setText("");
public void Edit()
//Save the modified record
int intIndex = lstBooks.getSelectedIndex();
if(intIndex == 0) //Make sure a record is selected
//Position 0 holds a text message
lblMessage.setText("Please select the record to change");
else
String strISBN = lstBooks.getSelectedItem();
try
cmdBook.executeUpdate("Update Book "
+ "Set [ISBN] = '" + txtISBN.getText() + "', "
+ "[Title] = '" + txtTitle.getText() + "', "
+ "[Author] = '" + txtAuthor.getText() + "', "
+ "[Publisher] = '" + txtPublisher.getText() + "' "
+ "Where [ISBN] = '" + strISBN + "';");
if (!strISBN.equals(txtISBN.getText()))
//Last name changed; change the list
lstBooks.remove(intIndex); //Remove the old entry
lstBooks.add(txtISBN.getText()); //Add the new entry
catch(SQLException error)
lblMessage.setText("Error during Edit. " + "Error: " + error.toString());
public void stop()
//Terminate the connection
try
if (conBook != null)
conBook.close();
catch(SQLException error)
lblMessage.setText("Unable to disconnect");How DO you compile then?
If you don't type "javac", you must be using an IDE.
In your IDE there should be some kind of configuration
tab or option for "compiler options" or compilation options
or compiler arguments... something like that.
put "-deprecation" in that text box and recompile.
Your compiler should tell you all about which methods
are deprecated -- you then go to your trust JavaDocs
and lookup those methods in the API and read WHY they
are deprecated (i.e. OLD, outdated, defunct, no longer used)
and what you should use instead. Then, correct your
code to no longer use the deprecated methods and instead
do things as suggested in the deprecation comments. -
Hi,
today I'm once again annoyed about the grubby maintainance and state of the APIs for enterprise portal. Yes I mean the actual version 7.0 (aka NW2004s)! I'll implement a own navigation connector node. If I derive my class vom AbstractNavigationConnectorNode (as suggested in the documentation) I'll get lots of warnings that I'm using deprecated functions because AbstractNavigationConnectorNode implements INavigationConnectorNode which is deprecated How can one get to neat code in this case? Yes a simple workaround will be to switch off the warnings for deprecated codings - but hiding an issue won't solve it! Why can't the functions set to be deprecated not until a new functionality for them will be available? What do you think about this?
Cheers LarsHi Lars,
Yes, this indeed is annyoing, but well known, that SAP doesn't really handle the "deprecated" marker as it is intended. The same can be watched within KM (for example concerning the old EP5 user object).
The only way to get them on the right track probably is to complain about this practice "officially", for example via OSS messages. A change of this policy will take it's time, but that should be worth it's effort...
Also see such old threads as EP6.0: why KM api using EP5 UM? or IResourceContext
Hope it helps
Detlev -
Having problems linking two java classes getting a "deprecated API" error??
Hi,
I am tryin to link one page to another in my program, however i get the followin msg:-
Project\alphaSound.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
Process completed.
this only happens when i add the bold piece of code to the class; even though the italic piece of code does take you to a new page?:-
public class alphaSound extends JPanel implements ActionListener
{static JFrame f = new JFrame("AlphaSound");
public alphaSound() {
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
else if(source == vowel)
{ Vowelm vm = new Vowelm();
vm.setSize(Toolkit.getDefaultToolkit().getScreenSize());
vm.show();
f.dispose();
else if(source == back)
{ MainPage main = new MainPage();
main.setSize(400,300);
main.show();
f.dispose();}
public static void main(String s[]) {
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
//JFrame f = new JFrame("AlphaSound");
f.addWindowListener(l);
f.getContentPane().add(new alphaSound());
f.setSize(Toolkit.getDefaultToolkit().getScreenSize());
f.show();
}here is the class its tryin to call
public class Vowelm extends JPanel implements ActionListener
{static JFrame v = new JFrame("VowelSound");
public Vowelm() {
..etc...
public static void main(String s[]) {
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
//JFrame f = new JFrame("VowelSound");
v.addWindowListener(l);
v.getContentPane().add(new VowelmSound());
v.setSize(Toolkit.getDefaultToolkit().getScreenSize());
v.show();
}Im pretty sure ther is some conflict between the two classes due to the way they are called and designed?
Hope you can help!
Kind Regards
RajYou may want to check your show() calls and see if
they can be replaced with setVisible(). Forexample,
in your Vowelm code, you have a static JFrame v.
At
the end of your main function, you use v.show().As
of JDK1.1, this has been deprecated in favour of
setVisible(boolean).hey show() in JFrame is from Window and in windowits
not deprecated ..
show is not decrecated thats for sure ... i dontknow
y you said that ...
you can look in docs as well..
True - but this in turn overrides show() from
java.awt.Component, which has been deprecated. My
guess is that's where the problem comes from.
Thanks for the Dukes!
FlicAnd then again - perhaps not. After looking into this a bit more, I take back my last comment about the Component override. However, as I said in my original reply, compiling with -deprecation should tell you which show() call is flagging the error. There is definitely one somewhere that the JVM doesn't like - without seeing your complete code, it's hard to say exactly where. Based on what you've posted, my guess is that it is within the Vowelm class.
Next time, I'll try to avoid 'shooting from the hip'.
Again, thanks for the Dukes,
Flic -
When i compile my program i get overrides a deprecated API.
there is no error in the program but this message override a deprecated API and there is no execute. here is the program please help me.
* Swing version.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.BorderFactory.*;
import javax.swing.border.* ;
public class ff extends JPanel implements ActionListener {
JButton n5,n2,n7,b1,b2,b3,b4,b5,b6,b7,b8,b9;
public ff(){
boolean inAnApplet = true;
JPanel topPanel = new JPanel();
topPanel.setLayout(new FlowLayout());
//topPanel.setBackground(lightBlue);
Border etchedBorder = BorderFactory.createEtchedBorder(Color.blue,Color.cyan);
topPanel.setBorder(BorderFactory.createTitledBorder(etchedBorder,"Dog Products",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION,
new Font("Serif",Font.BOLD,15),
Color.black));
Icon h5 = new ImageIcon( "c:\\a\\birdfood1t.gif" );
n5 = new JButton("Button 1",h5);
topPanel.add(n5);
n5.setActionCommand("n5");
n5.addActionListener(this);
//getContentPane().add(topPanel,BorderLayout.NORTH);
Icon h2 = new ImageIcon( "c:\\a\\birdfood1t.gif" );
n2 = new JButton("Button 1",h2);
topPanel.add(n2);
n2.setActionCommand("n2");
n2.addActionListener(this);
//getContentPane().add(topPanel,BorderLayout.NORTH);
Icon h7 = new ImageIcon( "c:\\a\\birdfood1t.gif" );
n7 = new JButton("Button 2",h7);topPanel.add(n7);
n7.setActionCommand("n7");
n7.addActionListener(this);
//getContentPane().add(topPanel,BorderLayout.NORTH);
//birdfoodw();
//public void birdfoodw() {
//Container contentPane = getContentPane();
JPanel v=new JPanel();
v.setLayout(new BorderLayout());
// setLayout(new BoxLayout(contentPane,
JPanel v1=new JPanel();
v1.setLayout(new GridLayout(9,1));
v1.add(n5);
v1.add(n2);
v1.add(n7);
JScrollPane sp=new JScrollPane(v1);
v.add(sp);
add(v,BorderLayout.CENTER);
protected void buildToyList() {
Icon x1 = new ImageIcon("c:\\a\\dogtoys1t.gif");
b1.setIcon(x1);
b1.setActionCommand("toys1");
b1.setText("Dog toy #1");
Icon x2 = new ImageIcon("c:\\a\\dogtoys2t.gif");
b2.setIcon(x2);
b2.setActionCommand("toys1");
b2.setText("Dog toy #1");
Icon x3 = new ImageIcon("c:\\a\\dogtoys3t.gif");
b3.setIcon(x3);
b3.setActionCommand("toys1");
b3.setText("Dog toy #1");
Icon x4 = new ImageIcon("c:\\a\\dogtoys4t.gif");
b4.setIcon(x4);
b4.setActionCommand("toys1");
b4.setText("Dog toy #1");
Icon x5 = new ImageIcon("c:\\a\\dogtoys5t.gif");
b5.setIcon(x5);
b5.setActionCommand("toys1");
b5.setText("Dog toy #1");
Icon x6 = new ImageIcon("c:\\a\\dogtoys6t.gif");
b6.setIcon(x6);
b6.setActionCommand("toys1");
b6.setText("Dog toy #1");
Icon x7 = new ImageIcon("c:\\a\\dogtoys7t.gif");
b7.setIcon(x7);
b7.setActionCommand("toys1");
b7.setText("Dog toy #1");
Icon x8 = new ImageIcon("c:\\a\\dogtoys1t.gif");
b8.setIcon(x8);
b8.setActionCommand("toys1");
b8.setText("Dog toy #1");
Icon x9 = new ImageIcon("c:\\a\\dogtoys1t.gif");
b9.setIcon(x9);
b9.setActionCommand("toys1");
b9.setText("Dog toy #1");
protected void buildFoodList() {
Icon x1 = new ImageIcon("c:\\a\\dogfood1t.gif");
b1.setIcon(x1);
b1.setActionCommand("food1");
b1.setText("Dog toy #1");
Icon x2 = new ImageIcon("c:\\a\\dogfood2t.gif");
b2.setIcon(x2);
b2.setActionCommand("food1");
b2.setText("Dog toy #1");
Icon x3 = new ImageIcon("c:\\a\\dogfood3t.gif");
b3.setIcon(x3);
b3.setActionCommand("food1");
b3.setText("Dog toy #1");
Icon x4 = new ImageIcon("c:\\a\\dogfood4t.gif");
b4.setIcon(x4);
b4.setActionCommand("food1");
b4.setText("Dog toy #1");
Icon x5 = new ImageIcon("c:\\a\\dogfood5t.gif");
b5.setIcon(x5);
b5.setActionCommand("food1");
b5.setText("Dog toy #1");
Icon x6 = new ImageIcon("c:\\a\\dogfood6t.gif");
b6.setIcon(x6);
b6.setActionCommand("food1");
b6.setText("Dog toy #1");
Icon x7 = new ImageIcon("c:\\a\\dogfood7t.gif");
b7.setIcon(x7);
b7.setActionCommand("food1");
b7.setText("Dog toy #1");
Icon x8 = new ImageIcon("c:\\a\\dogfood1t.gif");
b8.setIcon(x8);
b8.setActionCommand("food1");
b8.setText("Dog toy #1");
Icon x9 = new ImageIcon("c:\\a\\dogfood1t.gif");
b9.setIcon(x9);
b9.setActionCommand("food1");
b9.setText("Dog toy #1");
protected void buildTreatList() {
Icon x1 = new ImageIcon("c:\\a\\dogtreats1t.gif");
b1.setIcon(x1);
b1.setActionCommand("treats1");
b1.setText("Dog toy #1");
Icon x2 = new ImageIcon("c:\\a\\dogtreats2t.gif");
b2.setIcon(x2);
b2.setActionCommand("treats1");
b2.setText("Dog toy #1");
Icon x3 = new ImageIcon("c:\\a\\dogtreats3t.gif");
b3.setIcon(x3);
b3.setActionCommand("treats1");
b3.setText("Dog toy #1");
Icon x4 = new ImageIcon("c:\\a\\dogtreats4t.gif");
b4.setIcon(x4);
b4.setActionCommand("treats1");
b4.setText("Dog toy #1");
Icon x5 = new ImageIcon("c:\\a\\dogtreats5t.gif");
b5.setIcon(x5);
b5.setActionCommand("treats1");
b5.setText("Dog toy #1");
Icon x6 = new ImageIcon("c:\\a\\dogtreats6t.gif");
b6.setIcon(x6);
b6.setActionCommand("treats1");
b6.setText("Dog toy #1");
Icon x7 = new ImageIcon("c:\\a\\dogtreats7t.gif");
b7.setIcon(x7);
b7.setActionCommand("treats1");
b7.setText("Dog toy #1");
Icon x8 = new ImageIcon("c:\\a\\dogtreats1t.gif");
b8.setIcon(x8);
b8.setActionCommand("treats1");
b8.setText("Dog toy #1");
Icon x9 = new ImageIcon("c:\\a\\dogtreats1t.gif");
b9.setIcon(x9);
b9.setActionCommand("treats1");
b9.setText("Dog toy #1");
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "n5")
buildFoodList();
else if (e.getActionCommand() == "n7")
buildToyList();
else if (e.getActionCommand() == "n2")
buildTreatList();
public static void main(String args[]) {
ff window = new ff();
//window.inAnApplet = false;
//window.setTitle("bird food");
window.setSize(123,233);
window.show();
window.setVisible(true);Sana,
Look at your last but one line where you have used ".show()", which is a deprecated API. Change to ".repaint()" and try it out.
window.setSize(123,233);
window.show(); // show() is deprecated API...
window.setVisible(true);Cool
Ravi -
BPM 11g: JAVA API and Webservice API
Who knows BPM 11g: JAVA API and Webservice API?
Customer want to call BPM 11g between Heterogeneous systems, such .net framework. One way is use webservice API, I think, but where can find it? thank youWhen you create a BPM application in 11g, you're actually creating a SOA composite application with a BPMN component in the composite. From within the BPMN editor, you can specify the interface (parameters) of each start node in the process. If you select a start node, look at the implementation tab, you'll see a properties group that lets you define the interface one property at a time, or by selecting an interface from the catalog.
By defining these properties you're also defining the shape of the Web Service interface that will automatically be created in the composite. If you switch to the composite view, you'll see your BPMN process with a wire to it from a Web Service that's generated from the interface defined in the BPMN editor. The naming convention is the BPMN process name with ".service" appended. When you deploy the BPMN process, the web service will also be deployed, since it's also part of the composite. From Enterprise Manager (EM) you can test the service and get the WSDL, which could be used by other applications (e.g. .NET) to start and interact with a process instance.
This is one of the advantages of the 11g architecture. The composite exposes services to consumers/clients. The implementation could have been BPEL, BPMN, a Mediator, Java/EJBs, or any combination working together. To the consumer, it's just a web service.
In case your next question was about security ... you won't see properties about security in the BPMN editor. You use Web Service Manager to apply security or other constraints to the web service endpoint. -
Error: overrides a deprecated API
Hi:
I get the following error when I try to compile my code:
Note: CalendarTest.java uses or overrides a deprecated API. Recompile with "-deprecation" for details.
1 warning
How do I solve the problem?
Thanks.
Describes a calendar for a set of appointments.
@version 1.0
import java.util.Vector;
import java.util.*;
public class CalendarTest
{ public static void main(String[] args)
Calendar markCalendar = new Calendar("Mark");
Date start = new Date(2003 - 1900, 5 /*June*/, 2, 15, 0, 0);
Date end = new Date(2003 - 1900, 5, 2, 16, 0, 0);
markCalendar.addApp(new Appointment(start, end, "doctor"));
markCalendar.print();
Describes a calendar for a set of appointments.
class Calendar
Constructs a calendar for the person named.
public Calendar(String aName)
{ name = aName;
appointments = new Vector();
Adds an appointment to this Calendar.
@param anApp The appointment to add.
public void addApp(Appointment anApp)
appointments.add(anApp);
Removes an appointment from this Calendar.
@param anApp The appointment to be removed.
public void removeApp(Appointment toFind)
for ( int i = 0; i < appointments.size(); i++)
if (((Appointment)appointments.get(i)).equals(toFind))
appointments.remove(i);
Tests for duplicate appointment dates.
public void dupsTest()
for (int x = 0; x < appointments.size(); x++)
Appointment check = (Appointment)appointments.get(x);
for (int y = appointments.size()-1; y > x; y --)
Appointment nextApp =(Appointment) appointments.get(y);
if (check.match(nextApp))
{ System.out.println("Duplicate appointments: ");
check.print();
nextApp.print();
Prints the Calendar.
public void print()
{ System.out.println(name + " C A L E N D A R");
System.out.println();
System.out.println("Date Starttime EndTime Appointment");
for (int i = 0; i < appointments.size(); i++)
{ Appointment nextApp =(Appointment) appointments.get(i);
nextApp.print();
private Vector appointments;
private String name;
private Appointment theAppointment;
Describes an appointment.
class Appointment
public Appointment(Date aStarttime,Date aEndtime, String aApp)
starttime = aStarttime;
endtime = aEndtime;
app = aApp;
Method to test whether on object equals another.
@param otherObject The other object.
@return true if equal, false if not
public boolean equals(Object otherObject)
if (otherObject instanceof Appointment)
{ Appointment other = (Appointment)otherObject;
return (date.equals(other.date) && starttime.equals(other.starttime)
&& endtime.equals(other.endtime) && app.equals(other.app));
else return false;
Method to test whether part of an object equals another.
@param otherObject The other object.
@return true if equal, false if not
public boolean match(Object otherObject)
if (otherObject instanceof Appointment)
{ Appointment other = (Appointment)otherObject;
return (date.equals(other.date) && starttime.equals(other.starttime)
&& endtime.equals(other.endtime));
else return false;
Prints the Date, Starttime, Endtime and a description of the
appointment.
public void print()
{ System.out.println();
System.out.println(date + " " + starttime + " " + endtime
+ " " + app );
System.out.println();
private Date starttime;
private Date endtime;
private String app;The methods you used to instantiate your new dates has been deprecated and should no longer be used. This is just a warning though and your code will still work. Sun is just telling you that they no longer support those constructors for the Date class and that future releases of J2SE may not have them included in the API. If you wanted to, you could ignore it, or you could use the sample code instead for your Date creations:
//need the following additional import
import java.text.*;
//HH is hours (0-23) see SimpleDateFormat for others
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date start= formatter.parse("06/02/2003 15:00:00");
Date end = formatter.parse("06/02/2003 16:00:00");tajenkins -
Where is the getString() implementation for RS and Object class question
Dear all,
I had these two questions ringing since a long time.
1)ResultSet is an interface.
In my jdbc code I have generally written rs.getString() and rs.getInt etc.. without giving a second thought as to where exactly is this getter implemented !
I have RTF API .. without too much help.
Could some one kindly explain Where is the implementation of the getString method ?
2) Could you please tell why the Wait() Notify() and NotifyAll methods have been implemented in the Object class ? What was the need to define em in the Object class ?
Thanks in advance for your time spent on this.
RgdsSarvananda wrote:
In the MySQL driver for example it's implemented in com.mysql.jdbc.ResultSet Right. Now it makes sense to me. Every single db that gives me a driver will have their specific implementation for the interface methods of ResultSet.
>
why do you need that?
..Thats a design decision
One of my friends asked me this and I was caught unawares. Any ideas on what factors could have made this design decision ?
Rgds
>
In the MySQL driver for example it's implemented in com.mysql.jdbc.ResultSet Right. Now it makes sense to me. Every single db that gives me a driver will have their specific implementation for the interface methods of ResultSet.
>
why do you need that?
..Thats a design decision
One of my friends asked me this and I was caught unawares. Any ideas on what factors could have made this design decision ?
A desire to not have to couple your code to a particular database and JDBC driver. It's a classic example of the abstract factory pattern -
Since I installed the last JDK update, I get the same warning:
MyFrame.show(): Deprecated API, show() in java.awt.Window has been deprecated.
But I try to find in Sun site, and at the method description it's not deprecated yet...
Any idea? What should I use instead of MyFrame.show()?Yeah, that is, I'm a little sleepy yet...
If you want to know, java.awt.Window.show() should be replaced by Component.setVisible(true). -
Deprecated API error??`
hi!
i m getting this error :
Note: FileInputDemo.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
for the code:
/* * * FileOutputDemo
* * Demonstration of FileOutputStream and
* PrintStream classes
import java.io.*;
class FileInputDemo {
public static void main(String args[]) {
if (args.length == 1) {
try {
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(args[0]);
// Convert our input stream to a
// DataInputStream
DataInputStream in = new DataInputStream(fstream);
// Continue to read lines while
// there are still some left to read
while (in.available() !=0) {
// Print file line to screen
System.out.println (in.readLine());
in.close();
catch (Exception e) {
System.err.println("File input error");
else System.out.println("Invalid parameters");
someone plz help me!!
thanks
:)i m getting this error :It is a "note" or warning, not an error.
Note: FileInputDemo.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.Have you tried recompiling it with -Xlint:deprecation? -
Oracle 10.2 Loadjava for SQLJ says "..uses or overrides deprecated API"
I just upgraded to 10.2 from 8.1.7 (platform is AIX 5L) and sqlj program was INVALID after upgrade.Running loadjava on the program seems successfull, and java class is VALID, but also get:
Note: MQBridge uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
Well, after lots of reading to try and assess the significance of the error and identify the deprecated API, I think the sqlj script on UNIX will allow me to issue the 'deprecated' option to perhaps identify the old API. However, the I'm having trouble even getting the sqlj to work (I think it's in $OH/oc4j/bin with non-executable permissions) and the README in $OH/sqlj/demo seems incorrect.
The APIs in the program are:
import oracle.sqlj.runtime.Oracle
import java.sql.SQLException
import oracle.sql.CLOB
import com.ibm.mq.*
import java.math.BigDecimal
import java.util.*
import javax.swing.event.*
Perhaps someone versed in this arena can provide some guidance in what seems to be a straighforward problem (or maybe not a problem)? Sure would appreciate it!HI,
In my opinion, upgrading the RDBMS might not suffices.
I'd re-install SQLJ 10.2f rom the companion CD and check that its working fine in your environment using the following command:
$ sqlj -version
Oracle SQLJ Release 10.2.0.1.0 Production
Copyright (c) 1997, 2005, Oracle Corporation. All Rights Reserved.Oracle furnishes the following code samples under
$ORACLE_HOME/sqlj/demo/ to check your environment:
connect.properties // to be customized to your environment
TestInstallCreateTable.java
TestInstallJDBC.java
TestInstallSQLJ.sqlj
TestInstallSQLJChecker.sqlj
Then make sure that:
- the executables (script and binaries) are available under $ORACLE_HOME/bin.
- the PATH environment variable must include $ORACLE_HOME/bin.
- the CLASSPATH environment variable must include the following:
- the JDBC jars (ojdbc14.jar, or clases12.jar)
- ORACLE_HOME/sqlj/lib/translator.jar
- ORACLE_HOME/sqlj/lib/runtime12.jar
As described in chapter 10 of my book, here is how to use them to check
your environment:
// create a table for test purposes
$ javac TestInstallCreateTable.java
$ java -Doracle.net.tns_admin=$TNS_ADMIN TestInstallCreateTable
SALES table created
$
// Check JDBC install
$ javac TestInstallJDBC.java
$ java -Doracle.net.tns_admin=$TNS_ADMIN TestInstallJDBC
Hello JDBC!
$
// Check the SQLJ translator, runtime, and the application
$ sqlj TestInstallSQLJ.sqlj
$ java -Doracle.net.tns_admin=$TNS_ADMIN TestInstallSQLJ
Hello, SQLJ!
$Then check that SQLJ is installed in the database using
SQL> describe sys.sqljutlOtherwise, run the sqljutl.sql script to install it. In addition, the following query checks the availability of the SQLJ translator in the database (using system or a DBA account)
SQL> select object_type, status from all_objects where
2 dbms_java.longname(object_name) ='oracle/sqlj/checker/JdbcVersion';See chapter 10, 11 and 12 of my book for further coverage..
Kuassi, http://db360.blogspot.com -
Using KM and Collaboration API in portal component and web dynpro
Hi,
I have to develop portal components and Web Dynpros (JAVA) which have to use the following functions:
- copy, delete KM documents
- sending E-Mails
Can anyone give me some actual documentation links for the KM and Collaboration APIs ?
Which references do I need in portalapp.xml for KM/collaboration and which jar-Files do I have to add to the project?
We are using NetWeaver 7.01 SP18.Hi Yogalakshmi,
thank you for the link and the information. Now I managed to work with the KM documents.
One more Question: to get the resource Context, I use this code:
portalUser = WPUMFactory.getServiceUserFactory().getServiceUser("cmadmin_service");
IResourceContext resourceContext = new ResourceContext(portalUser);
The method getServiceUser is deprecated, also the com.sapportals.portal.security.usermanagement.IUser is deprecated. Is there an other possibility to get the ResourceContext. (perhaps with com.sap.security.api.IUser) ? -
LessFilter and ReflectionExtractor API giving incorrect results
I am using Oracle Coherence version 3.7. We are storing DTO objects in cache having "modificationTime" property/instance variable of "java.util.date" type. In order to fetch data from cache passing "java.util.date" variable as input for comparison, LessFilter and ReflectionExtractor api's are used. Cache.entryset(filter) returns incorrect results.
Note: we are using "com.tangosol.io.pof.PofWriter.writeDateTime(int arg0, Date arg1) " api to store data in cache and "com.tangosol.io.pof.PofReader.readDate(int arg0)" to read data from cache. There is no readDateTime api available ?
We tested same scenario updating DTO class. Now it has another property in DTO of long(to store milliseconds). Now long is passed as input for comparison to LessFilter and ReflectionExtractor api's and correct results are retrieved.
Ideally, java.util.Date or corresponding milliseconds passed as input should filter and return same and logically correct results.
Code:
1) Test by Date: returns incorrect results
public void testbyDate(final Date startDate) throws IOException {
final ValueExtractor extractor = new ReflectionExtractor("getModificationTime");
LOGGER.debug("Fetching records from cache with modTime less than: " + startDate);
final Filter lessFilter = new LessFilter(extractor, startDate);
final Set results = CACHE.entrySet(lessFilter);
LOGGER.debug("Fetched Records:" + results.size());
assert results.isEmpty();
2) Test by milliseconds: returns correct results
public void testbyTime(final Long time) throws IOException {
final ValueExtractor extractor = new ReflectionExtractor("getTimeinMillis");
LOGGER.debug("Fetching records from cache with timeinMillis less than: " + time);
final Filter lessFilter = new LessFilter(extractor, time);
final Set results = CACHE.entrySet(lessFilter);
LOGGER.debug("Fetched Records:" + results.size());
assert results.isEmpty();
}Hi Harvy,
Thanks for your reply. You validated it against a single object in cache using ExternalizableHelper.toBinary/ExternalizableHelper.fromBinary. But we are querying against a collection of objects in cache.
Please have a look at below code.
*1)* We are using TestDTO.java extending AbstractCacheDTO.java as value object for our cache.
import java.io.IOException;
import java.util.Date;
import com.tangosol.io.AbstractEvolvable;
import com.tangosol.io.pof.EvolvablePortableObject;
import com.tangosol.io.pof.PofReader;
import com.tangosol.io.pof.PofWriter;
* The Class AbstractCacheDTO.
* @param <E>
* the element type
* @author apanwa
public abstract class AbstractCacheDTO<E> extends AbstractEvolvable implements EvolvablePortableObject {
/** The Constant IDENTIFIER. */
private static final int IDENTIFIER = 0;
/** The Constant CREATION_TIME. */
private static final int CREATION_TIME = 1;
/** The Constant MODIFICATION_TIME. */
private static final int MODIFICATION_TIME = 2;
/** The version number of cache DTO implementation **/
private static final int VERSION = 11662;
/** The id. */
private E id;
/** The creation time. */
private Date creationTime = new Date();
/** The modification time. */
private Date modificationTime;
* Gets the id.
* @return the id
public E getId() {
return id;
* Sets the id.
* @param id
* the new id
public void setId(final E id) {
this.id = id;
* Gets the creation time.
* @return the creation time
public Date getCreationTime() {
return creationTime;
* Gets the modification time.
* @return the modification time
public Date getModificationTime() {
return modificationTime;
* Sets the modification time.
* @param modificationTime
* the new modification time
public void setModificationTime(final Date modificationTime) {
this.modificationTime = modificationTime;
* Read external.
* @param reader
* the reader
* @throws IOException
* Signals that an I/O exception has occurred.
* @see com.tangosol.io.pof.PortableObject#readExternal(com.tangosol.io.pof.PofReader)
@Override
public void readExternal(final PofReader reader) throws IOException {
id = (E) reader.readObject(IDENTIFIER);
creationTime = reader.readDate(CREATION_TIME);
modificationTime = reader.readDate(MODIFICATION_TIME);
* Write external.
* @param writer
* the writer
* @throws IOException
* Signals that an I/O exception has occurred.
* @see com.tangosol.io.pof.PortableObject#writeExternal(com.tangosol.io.pof.PofWriter)
@Override
public void writeExternal(final PofWriter writer) throws IOException {
writer.writeObject(IDENTIFIER, id);
writer.writeDateTime(CREATION_TIME, creationTime);
writer.writeDateTime(MODIFICATION_TIME, modificationTime);
@Override
public int getImplVersion() {
return VERSION;
import java.io.IOException;
import com.tangosol.io.pof.PofReader;
import com.tangosol.io.pof.PofWriter;
* @author nkhatw
public class TestDTO extends AbstractCacheDTO<TestIdentifier> {
private Long timeinMillis;
private static final int TIME_MILLIS_ID = 3;
@Override
public void readExternal(final PofReader reader) throws IOException {
super.readExternal(reader);
timeinMillis = Long.valueOf(reader.readLong(TIME_MILLIS_ID));
@Override
public void writeExternal(final PofWriter writer) throws IOException {
super.writeExternal(writer);
writer.writeLong(TIME_MILLIS_ID, timeinMillis.longValue());
* @return the timeinMillis
public Long getTimeinMillis() {
return timeinMillis;
* @param timeinMillis
* the timeinMillis to set
public void setTimeinMillis(final Long timeinMillis) {
this.timeinMillis = timeinMillis;
}*2)* TestIdentifier.java as key in cache for storing TestDTO objects.
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
import com.tangosol.io.AbstractEvolvable;
import com.tangosol.io.pof.EvolvablePortableObject;
import com.tangosol.io.pof.PofReader;
import com.tangosol.io.pof.PofWriter;
* @author nkhatw
public class TestIdentifier extends AbstractEvolvable implements EvolvablePortableObject {
private String recordId;
/** The Constant recordId. */
private static final int RECORD_ID = 0;
/** The version number of cache DTO implementation *. */
private static final int VERSION = 11660;
@Override
public void readExternal(final PofReader pofreader) throws IOException {
recordId = pofreader.readString(RECORD_ID);
@Override
public void writeExternal(final PofWriter pofwriter) throws IOException {
pofwriter.writeString(RECORD_ID, recordId);
@Override
public int getImplVersion() {
return VERSION;
@Override
public boolean equals(final Object object) {
if (object instanceof TestIdentifier) {
final TestIdentifier id = (TestIdentifier) object;
return StringUtils.equals(recordId, id.getRecordId());
} else {
return false;
* @see java.lang.Object#hashCode()
@Override
public int hashCode() {
return recordId.hashCode();
* @return the recordId
public String getRecordId() {
return recordId;
* @param recordId
* the recordId to set
public void setRecordId(final String recordId) {
this.recordId = recordId;
}*3) Use Case*
We are fetching TestDTO records from cache based on LessFilter. However, results returned from cache differs if query is made over property "getModificationTime" of type java.util.Date or over property "getTimeinMillis" of type Long(milliseconds corresponding to date). TestService.java is used for the same.
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import com.ladbrokes.dtos.cache.TestDTO;
import com.ladbrokes.dtos.cache.TestIdentifier;
import com.cache.services.CacheService;
import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;
import com.tangosol.util.Filter;
import com.tangosol.util.ValueExtractor;
import com.tangosol.util.extractor.ReflectionExtractor;
import com.tangosol.util.filter.LessFilter;
* @author nkhatw
public class TestService implements CacheService<TestIdentifier, TestDTO, Object> {
private static final String TEST_CACHE = "testcache";
private static final NamedCache CACHE = CacheFactory.getCache(TEST_CACHE);
private static final Logger LOGGER = Logger.getLogger(TestService.class);
* Push DTO objects with a) modTime of java.util.Date type b) timeInMillis of Long type
* @throws IOException
public void init() throws IOException {
for (int i = 0; i < 30; i++) {
final TestDTO dto = new TestDTO();
final Date modTime = new Date();
dto.setModificationTime(modTime);
final Long timeInMillis = Long.valueOf(System.currentTimeMillis());
dto.setTimeinMillis(timeInMillis);
final TestIdentifier testId = new TestIdentifier();
testId.setRecordId(String.valueOf(i));
dto.setId(testId);
final CacheService testService = new TestService();
testService.createOrUpdate(dto, null);
LOGGER.debug("Pushed record in cache with key: " + i + " modTime: " + modTime + " Time in millis: "
+ timeInMillis);
* 1) Fetch Data from cache based on LessFilter with args:
* a) ValueExtractor: extracting time property
* b) java.util.Date value to be compared with
* 2) Verify extracted entryset
* @throws IOException
public void testbyDate(final Date startDate) throws IOException {
final ValueExtractor extractor = new ReflectionExtractor("getModificationTime");
LOGGER.debug("Fetching records from cache with modTime less than: " + startDate);
final Filter lessFilter = new LessFilter(extractor, startDate);
final Set results = CACHE.entrySet(lessFilter);
LOGGER.debug("Fetched Records:" + results.size());
assert results.isEmpty();
* 1) Fetch Data from cache based on LessFilter with args:
* a) ValueExtractor: extracting "time in millis property"
* b) java.Long value to be compared with
* 2) Verify extracted entryset
public void testbyTime(final Long time) throws IOException {
final ValueExtractor extractor = new ReflectionExtractor("getTimeinMillis");
LOGGER.debug("Fetching records from cache with timeinMillis less than: " + time);
final Filter lessFilter = new LessFilter(extractor, time);
final Set results = CACHE.entrySet(lessFilter);
LOGGER.debug("Fetched Records:" + results.size());
assert results.isEmpty();
@Override
public void createOrUpdate(final TestDTO testDTO, final Object arg1) throws IOException {
CACHE.put(testDTO.getId(), testDTO);
@Override
public void createOrUpdate(final Collection<TestDTO> arg0, final Object arg1) throws IOException {
// YTODO Auto-generated method stub
@Override
public <G>G read(final TestIdentifier arg0) throws IOException {
// YTODO Auto-generated method stub
return null;
@Override
public Collection<?> read(final Map<TestIdentifier, Object> arg0) throws IOException {
// YTODO Auto-generated method stub
return null;
@Override
public void remove(final TestDTO arg0) throws IOException {
// YTODO Auto-generated method stub
Use Case execution Results:
"testbyTime" method returns correct results.
However, "testbyDate" method gives random and incorrect results.
Maybe you are looking for
-
i written following code in subroutine for script. it is giving runtime error as " UNABLE TO INTERPRET 10,000 AS A NUMBER . And it is indicating error in the line a_skfbt = in_tab-value. pls suggest me solution. form whd_tax tables in_tab structu
-
Streaming over WiFi is not fluent
When I stream video from my mac or iPad over wifi, video is not fluent, it is stucking. When I stream it from my mac over ethernet (apple tv is connected to my network by ethernet), it works just fine. These problems started after updating my Apple T
-
Data level Security with Oracle Apps as Source
Hi all I am implementing Data level Security with Apps as Source(OLTP) on Single Sign On.(Oracle has provided the Vanila rpd & we are working on that) I need to Filter data based on Business Group, Users are created in Apps and they are registered wi
-
NullPointerException in HttpsClient
I'm trying to get the content from a url using the https protocol, but when I run my program I get the following exception: java.lang.NullPointerException at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a(DashoA6275) at com.sun.n
-
How to turn off sound in twitter app when I scroll down?
I know there must be an easy way to do this, but I can't find it. I have twitter notification sounds turned off, which is what I want. Inside the twitter app, though, when I scroll down to see new tweets, I get a sort of suck-then-pop sound. I don't